package com.instructure.canvasapi.utilities; import android.content.Context; import android.content.SharedPreferences; import com.instructure.canvasapi.api.UserAPI; import com.instructure.canvasapi.model.User; import java.io.File; /** * Copyright (c) 2015 Instructure. All rights reserved. */ public class Masquerading { private final static String MASQ_PREF_NAME = "masquerading-SP"; private final static String IS_MASQUERADING = "isMasquerading"; private final static String MASQUERADE_ID = "masqueradeId"; //function to add masquerading id to end of query string public static String addMasqueradeId(String url, Context context) { if(Masquerading.isMasquerading(context)) { long masqueradeId = getMasqueradingId(context); if(url.contains("?")) { url += "&as_user_id=" + masqueradeId; } else { url += "?as_user_id=" + masqueradeId; } } return url; } public static long getMasqueradingId(Context context){ SharedPreferences settings = context.getSharedPreferences(MASQ_PREF_NAME, 0); return settings.getLong(MASQUERADE_ID,-1); } public static boolean isMasquerading(Context context) { SharedPreferences settings = context.getSharedPreferences(MASQ_PREF_NAME, 0); return settings.getBoolean(IS_MASQUERADING, false); } public static void stopMasquerading(Context context) { File cacheDir = new File(context.getFilesDir(), "cache"); FileUtilities.deleteAllFilesInDirectory(cacheDir); CanvasRestAdapter.deleteHttpCache(); SharedPreferences settings = context.getSharedPreferences(MASQ_PREF_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean(IS_MASQUERADING, false); editor.putLong(MASQUERADE_ID, -1); editor.apply(); } public static void startMasquerading(long masqueradeId, Context context, CanvasCallback<User> masqueradeUser, String domain) { File cacheDir = new File(context.getFilesDir(), "cache"); FileUtilities.deleteAllFilesInDirectory(cacheDir); CanvasRestAdapter.deleteHttpCache(); SharedPreferences settings = context.getSharedPreferences(MASQ_PREF_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean(IS_MASQUERADING, true); editor.putLong(MASQUERADE_ID, masqueradeId); editor.apply(); //Check to see if they're trying to switch domain as site admin if(domain != null && domain.trim().length() != 0) { APIHelpers.setDomain(context, domain); } UserAPI.getUserByIdNoCache(masqueradeId, masqueradeUser); } }