impersonateUser method
Impersonate a user
userId The ID of the user to impersonate
Implementation
Future<ImpersonateUserResponse<T>> impersonateUser({
required String userId,
}) async {
try {
final response = await super.dio.post(
"/admin/impersonate-user",
data: {
"userId": userId,
},
options: await super.getOptions(isTokenRequired: true),
);
final impersonateUserResponse = ImpersonateUserResponse<T>.fromJson(response.data, super.fromJsonUser);
final adminToken = await super.tokenStore.getToken(); // Get the existing "admin" user token
assert(adminToken.isNotEmpty, "Admin token is empty");
await super.tokenStore.saveAdminToken(adminToken); // Save the "admin" user token
await super.tokenStore.saveToken(
impersonateUserResponse.session.token,
); // Replace the "admin" user token with the impersonated user token
return impersonateUserResponse;
} catch (e) {
final message = getErrorMessage(e);
if (message == null) rethrow;
throw message;
}
}