Changeset View
Changeset View
Standalone View
Standalone View
src/app/Http/Controllers/API/V4/Reseller/UsersController.php
<?php | <?php | ||||
namespace App\Http\Controllers\API\V4\Reseller; | namespace App\Http\Controllers\API\V4\Reseller; | ||||
use App\Domain; | use App\Domain; | ||||
use App\User; | use App\User; | ||||
use App\UserAlias; | use App\UserAlias; | ||||
use App\UserSetting; | use App\UserSetting; | ||||
use Illuminate\Http\Request; | use Illuminate\Http\Request; | ||||
use Illuminate\Support\Facades\Validator; | use Illuminate\Support\Facades\Validator; | ||||
class UsersController extends \App\Http\Controllers\API\V4\UsersController | class UsersController extends \App\Http\Controllers\API\V4\UsersController | ||||
{ | { | ||||
/** | /** | ||||
* Approve the user signup (draft) | |||||
* | |||||
* @param \Illuminate\Http\Request $request The API request. | |||||
* @param string $id User identifier | |||||
* | |||||
* @return \Illuminate\Http\JsonResponse The response | |||||
*/ | |||||
public function approve(Request $request, $id) | |||||
{ | |||||
$user = User::find($id); | |||||
$reseller = auth()->user(); | |||||
if ( | |||||
empty($user) | |||||
|| $user->tenant_id != $reseller->tenant_id | |||||
|| $user->role == 'admin' | |||||
|| !$user->isDraft() | |||||
) { | |||||
return $this->errorResponse(404); | |||||
} | |||||
$user->status ^= User::STATUS_DRAFT; | |||||
$user->save(); | |||||
// FIXME: We should probably reset entitlements created_at/updated_at times to 'now' | |||||
// Also the user created_at too? | |||||
\App\Jobs\SignupApprovalEmail::dispatch($user); | |||||
return response()->json([ | |||||
'status' => 'success', | |||||
'message' => __('app.user-approve-success'), | |||||
]); | |||||
} | |||||
/** | |||||
* Dismiss the user signup (draft) | |||||
* | |||||
* @param \Illuminate\Http\Request $request The API request. | |||||
* @param string $id User identifier | |||||
* | |||||
* @return \Illuminate\Http\JsonResponse The response | |||||
*/ | |||||
public function dismiss(Request $request, $id) | |||||
{ | |||||
$user = User::find($id); | |||||
$reseller = auth()->user(); | |||||
if ( | |||||
empty($user) | |||||
|| $user->tenant_id != $reseller->tenant_id | |||||
|| $user->role == 'admin' | |||||
|| !$user->isDraft() | |||||
) { | |||||
return $this->errorResponse(404); | |||||
} | |||||
$user->forceDelete(); | |||||
// FIXME: Should we inform the user? | |||||
return response()->json([ | |||||
'status' => 'success', | |||||
'message' => __('app.user-dismiss-success'), | |||||
]); | |||||
} | |||||
/** | |||||
* Returns users in a draft state. | |||||
* | |||||
* @return \Illuminate\Http\JsonResponse JSON response | |||||
*/ | |||||
public function drafts() | |||||
{ | |||||
$reseller = auth()->user(); | |||||
$users = User::where('tenant_id', $reseller->tenant_id) | |||||
->whereRaw('(status & ' . User::STATUS_DRAFT . ') > 0') | |||||
->whereNull('role') | |||||
->orderBy('created_at'); | |||||
if (request()->input('count')) { | |||||
$count = $users->count(); | |||||
$users = []; | |||||
} else { | |||||
$users = $users->get(); | |||||
$count = count($users); | |||||
$users->map(function ($user) { | |||||
return [ | |||||
'id' => $user->id, | |||||
'email' => $user->email, | |||||
'name' => $user->name(), | |||||
'external_email' => $user->getSetting('external_email'), | |||||
]; | |||||
}); | |||||
} | |||||
return response()->json([ | |||||
'status' => 'success', | |||||
'list' => $users, | |||||
'count' => $count, | |||||
]); | |||||
} | |||||
/** | |||||
* Searching of user accounts. | * Searching of user accounts. | ||||
* | * | ||||
* @return \Illuminate\Http\JsonResponse | * @return \Illuminate\Http\JsonResponse | ||||
*/ | */ | ||||
public function index() | public function index() | ||||
{ | { | ||||
$reseller = auth()->user(); | $reseller = auth()->user(); | ||||
$search = trim(request()->input('search')); | $search = trim(request()->input('search')); | ||||
▲ Show 20 Lines • Show All 129 Lines • Show Last 20 Lines |