Refactor impersonation functionality and handle error messages
This commit is contained in:
parent
c91a592431
commit
898c59104f
|
@ -104,7 +104,7 @@ class AuthController extends Controller
|
|||
];
|
||||
}
|
||||
|
||||
public function impersonate(Request $request, $user)
|
||||
public function impersonate(Request $request, User $user)
|
||||
{
|
||||
$authUser = User::find($request->user()->id);
|
||||
if(!$authUser->canImpersonate()) {
|
||||
|
@ -113,6 +113,20 @@ class AuthController extends Controller
|
|||
], 401);
|
||||
}
|
||||
|
||||
//Check if can be impersonated
|
||||
if(!$user->canBeImpersonated()) {
|
||||
return response()->json([
|
||||
'message' => 'Unauthorized'
|
||||
], 401);
|
||||
}
|
||||
|
||||
//Check if currently impersonating
|
||||
if(app('impersonate')->isImpersonating()) {
|
||||
return response()->json([
|
||||
'message' => 'Unauthorized'
|
||||
], 401);
|
||||
}
|
||||
|
||||
if(
|
||||
method_exists($request->user(), 'currentAccessToken') &&
|
||||
method_exists($request->user()->currentAccessToken(), 'delete')
|
||||
|
@ -124,11 +138,10 @@ class AuthController extends Controller
|
|||
$request->session()->regenerateToken();
|
||||
}
|
||||
|
||||
$impersonatedUser = User::find($user);
|
||||
$request->user()->impersonate($impersonatedUser);
|
||||
$token = $impersonatedUser->createToken('auth_token')->plainTextToken;
|
||||
$request->user()->impersonate($user);
|
||||
$token = $user->createToken('auth_token')->plainTextToken;
|
||||
|
||||
Logger::log("Impersonato utente", $impersonatedUser, $authUser);
|
||||
Logger::log("Impersonato utente", $user, $authUser);
|
||||
|
||||
return response()->json([
|
||||
'access_token' => $token,
|
||||
|
|
|
@ -210,6 +210,14 @@ export class TableComponent implements OnInit, OnDestroy {
|
|||
this.auth.impersonate(user).then(() => {
|
||||
this.loadTableData();
|
||||
this.userImpersonate.emit(1);
|
||||
}).catch((errMessage: any) => {
|
||||
console.error(errMessage);
|
||||
Swal.fire({
|
||||
title: this.translate.instant("error_title"),
|
||||
text: errMessage,
|
||||
icon: 'error',
|
||||
confirmButtonText: 'Ok'
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,6 +46,14 @@ export class AdminInfoComponent implements OnInit {
|
|||
this.router.navigate(['/list']);
|
||||
this.auth.impersonate(user).then(() => {
|
||||
console.log(user);
|
||||
}).catch((errMessage: any) => {
|
||||
console.error(errMessage);
|
||||
Swal.fire({
|
||||
title: this.translateService.instant("error_title"),
|
||||
text: errMessage,
|
||||
icon: 'error',
|
||||
confirmButtonText: 'Ok'
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -128,7 +128,7 @@ export class AuthService {
|
|||
})
|
||||
}
|
||||
|
||||
public impersonate(user_id: number): Promise<void> {
|
||||
public impersonate(user_id: number): Promise<void|string> {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.api.post(`impersonate/${user_id}`).then((data) => {
|
||||
this.authToken.updateToken(data.access_token);
|
||||
|
@ -142,7 +142,7 @@ export class AuthService {
|
|||
});
|
||||
}).catch((err) => {
|
||||
console.error(err);
|
||||
reject();
|
||||
reject(err.error.message);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue