Changeset View
Changeset View
Standalone View
Standalone View
src/app/Http/Controllers/API/UsersController.php
<?php | <?php | ||||
namespace App\Http\Controllers\API; | namespace App\Http\Controllers\API; | ||||
use App\Http\Controllers\Controller; | use App\Http\Controllers\Controller; | ||||
use App\Domain; | |||||
use App\User; | use App\User; | ||||
use Illuminate\Http\Request; | use Illuminate\Http\Request; | ||||
use Illuminate\Support\Facades\Auth; | use Illuminate\Support\Facades\Auth; | ||||
use Illuminate\Support\Facades\Validator; | use Illuminate\Support\Facades\Validator; | ||||
class UsersController extends Controller | class UsersController extends Controller | ||||
{ | { | ||||
/** | /** | ||||
▲ Show 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | class UsersController extends Controller | ||||
/** | /** | ||||
* Get the authenticated User | * Get the authenticated User | ||||
* | * | ||||
* @return \Illuminate\Http\JsonResponse | * @return \Illuminate\Http\JsonResponse | ||||
*/ | */ | ||||
public function info() | public function info() | ||||
{ | { | ||||
return response()->json($this->guard()->user()); | $user = $this->guard()->user(); | ||||
$response = $user->toArray(); | |||||
$response['statusInfo'] = self::statusInfo($user); | |||||
return response()->json($response); | |||||
} | } | ||||
/** | /** | ||||
* Get a JWT token via given credentials. | * Get a JWT token via given credentials. | ||||
* | * | ||||
* @param \Illuminate\Http\Request $request The API request. | * @param \Illuminate\Http\Request $request The API request. | ||||
* | * | ||||
* @return \Illuminate\Http\JsonResponse | * @return \Illuminate\Http\JsonResponse | ||||
▲ Show 20 Lines • Show All 81 Lines • ▼ Show 20 Lines | public function show($id) | ||||
if (!$result) { | if (!$result) { | ||||
return abort(404); | return abort(404); | ||||
} | } | ||||
return \App\User::find($id); | return \App\User::find($id); | ||||
} | } | ||||
/** | /** | ||||
* User status (extended) information | |||||
* | |||||
* @param \App\User $user User object | |||||
* | |||||
* @return array Status information | |||||
*/ | |||||
public static function statusInfo(User $user): array | |||||
{ | |||||
$status = 'new'; | |||||
$process = []; | |||||
$steps = [ | |||||
'user-new' => true, | |||||
'user-ldap-ready' => 'isLdapReady', | |||||
'user-imap-ready' => 'isImapReady', | |||||
]; | |||||
if ($user->isDeleted()) { | |||||
$status = 'deleted'; | |||||
} elseif ($user->isSuspended()) { | |||||
$status = 'suspended'; | |||||
} elseif ($user->isActive()) { | |||||
$status = 'active'; | |||||
} | |||||
list ($local, $domain) = explode('@', $user->email); | |||||
$domain = Domain::where('namespace', $domain)->first(); | |||||
// If that is not a public domain, add domain specific steps | |||||
if (!$domain->isPublic()) { | |||||
$steps['domain-new'] = true; | |||||
$steps['domain-ldap-ready'] = 'isLdapReady'; | |||||
$steps['domain-verified'] = 'isVerified'; | |||||
$steps['domain-confirmed'] = 'isConfirmed'; | |||||
} | |||||
// Create a process check list | |||||
foreach ($steps as $step_name => $func) { | |||||
$object = strpos($step_name, 'user-') === 0 ? $user : $domain; | |||||
$process[] = [ | |||||
'label' => $step_name, | |||||
'title' => __("app.process-{$step_name}"), | |||||
'state' => is_bool($func) ? $func : $object->{$func}(), | |||||
]; | |||||
} | |||||
return [ | |||||
'process' => $process, | |||||
'status' => $status, | |||||
]; | |||||
} | |||||
/** | |||||
* Get the guard to be used during authentication. | * Get the guard to be used during authentication. | ||||
* | * | ||||
* @return \Illuminate\Contracts\Auth\Guard | * @return \Illuminate\Contracts\Auth\Guard | ||||
*/ | */ | ||||
public function guard() | public function guard() | ||||
{ | { | ||||
return Auth::guard(); | return Auth::guard(); | ||||
} | } | ||||
} | } |