diff --git a/backend/app/Http/Controllers/UsuariosController.php b/backend/app/Http/Controllers/UsuariosController.php index 898b5dd..3d222db 100644 --- a/backend/app/Http/Controllers/UsuariosController.php +++ b/backend/app/Http/Controllers/UsuariosController.php @@ -63,14 +63,14 @@ class UsuariosController extends Controller { if (!$logged_user->canManageUsers()) { return response()->json([ 'error' => 'not_allowed', - 'message' => 'El usuario no tiene permisos para crear usuarios' + 'message' => 'El usuario ' . $logged_user->id . ' no tiene permisos para crear usuarios' ], 403); } if (!$logged_user->hasPermissionsOnRestaurant($restaurant)) { return response()->json([ 'error' => 'not_allowed', - 'message' => 'El usuario no puede crear un usuario en un restaurant al que no pertenece' + 'message' => 'El usuario ' . $logged_user->id . ' no puede crear un usuario en el restaurant ' . $restaurant->id . ' porque que no pertenece a el' ], 403); } @@ -132,14 +132,14 @@ class UsuariosController extends Controller { if (!$logged_user->canManageUsers()) { return response()->json([ 'error' => 'not_allowed', - 'message' => 'El usuario no tiene permisos para modificar usuarios' + 'message' => 'El usuario ' . $logged_user->id . ' no tiene permisos para modificar usuarios' ], 403); } if (!$logged_user->hasPermissionsOverUser($usuario)) { return response()->json([ 'error' => 'not_allowed', - 'message' => 'El usuario no tiene permisos para modificar a este usuario' + 'message' => 'El usuario ' . $logged_user->id . ' no tiene permisos para modificar al usuario ' . $usuario->id ], 403); } @@ -169,8 +169,44 @@ class UsuariosController extends Controller { return response()->json(["usuario" => $usuario]); } - public function delete(Request $request) { + public function delete(Request $request, $id) { + /** @var Usuario $logged_user */ + $logged_user = $request->user; + $usuario = Usuario::findByIdOrAuth0Id($id); + if (!$usuario) { + return response()->json([ + 'error' => 'not_found', + 'message' => 'El usuario con id ' . $id . ' no existe' + ], 404); + } + + if (!$logged_user->canManageUsers()) { + return response()->json([ + 'error' => 'not_allowed', + 'message' => 'El usuario ' . $logged_user->id . ' no tiene permisos para modificar usuarios' + ], 403); + } + + if (!$logged_user->hasPermissionsOverUser($usuario)) { + return response()->json([ + 'error' => 'not_allowed', + 'message' => 'El usuario ' . $logged_user->id . ' no tiene permisos para modificar al usuario ' . $usuario->id + ], 403); + } + + $auth0 = app(Auth0Service::class); + $auth0Response = $auth0->deleteUser($usuario->auth0_id); + + if ($auth0Response && array_key_exists('error', $auth0Response)) { + return response()->json([ + 'error' => $auth0Response['errorCode'], + 'message' => $auth0Response['message'], + ], $auth0Response['statusCode']); + } + + $usuario->delete(); + + return response()->json([], 204); } - } diff --git a/backend/app/Services/Auth0Service.php b/backend/app/Services/Auth0Service.php index 26636f9..f921eeb 100644 --- a/backend/app/Services/Auth0Service.php +++ b/backend/app/Services/Auth0Service.php @@ -71,17 +71,21 @@ class Auth0Service extends ServiceProvider { $payload = ["connection" => env('AUTH0_CONNECTION')]; - if ($email) - $payload["email"] = $email; - if ($username) - $payload["username"] = $username; - if ($password) - $payload["password"] = $password; - if ($metadata) - $payload["app_metadata"] = $metadata; + if ($email) $payload["email"] = $email; + if ($username) $payload["username"] = $username; + if ($password) $payload["password"] = $password; + if ($metadata) $payload["app_metadata"] = $metadata; return Http::withToken($this->getToken()) ->patch($endpoint, $payload) ->json(); } + + public function deleteUser($auth0_id) { + $endpoint = env('AUTH0_DOMAIN') . 'api/v2/users/' . $auth0_id; + + return Http::withToken($this->getToken()) + ->delete($endpoint) + ->json(); + } }