Skip to content

Commit 423332d

Browse files
committed
Creating the Api user controller
1 parent 03e6af5 commit 423332d

File tree

3 files changed

+19462
-17716
lines changed

3 files changed

+19462
-17716
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
<?php
2+
3+
namespace Modules\User\Http\Controllers\Api;
4+
5+
use Illuminate\Http\Request;
6+
use Illuminate\Routing\Controller;
7+
use Modules\User\Contracts\Authentication;
8+
use Modules\User\Entities\Sentinel\User;
9+
use Modules\User\Events\UserHasBegunResetProcess;
10+
use Modules\User\Http\Requests\CreateUserRequest;
11+
use Modules\User\Http\Requests\UpdateUserRequest;
12+
use Modules\User\Permissions\PermissionManager;
13+
use Modules\User\Repositories\UserRepository;
14+
use Modules\User\Transformers\FullUserTransformer;
15+
use Modules\User\Transformers\UserTransformer;
16+
17+
class UserController extends Controller
18+
{
19+
/**
20+
* @var UserRepository
21+
*/
22+
private $user;
23+
/**
24+
* @var PermissionManager
25+
*/
26+
private $permissions;
27+
28+
public function __construct(UserRepository $user, PermissionManager $permissions)
29+
{
30+
$this->user = $user;
31+
$this->permissions = $permissions;
32+
}
33+
34+
public function index(Request $request)
35+
{
36+
return UserTransformer::collection($this->user->serverPaginationFilteringFor($request));
37+
}
38+
39+
public function find(User $user)
40+
{
41+
return new FullUserTransformer($user->load('roles'));
42+
}
43+
44+
public function findNew(User $user)
45+
{
46+
return (new FullUserTransformer($user))->additional(['data' => ['is_new' => true]]);
47+
}
48+
49+
public function store(CreateUserRequest $request)
50+
{
51+
$data = $this->mergeRequestWithPermissions($request);
52+
53+
$this->user->createWithRoles($data, $request->get('roles'), $request->get('is_activated'));
54+
55+
return response()->json([
56+
'errors' => false,
57+
'message' => trans('user::messages.user created'),
58+
]);
59+
}
60+
61+
public function update(User $user, UpdateUserRequest $request)
62+
{
63+
$data = $this->mergeRequestWithPermissions($request);
64+
65+
$this->user->updateAndSyncRoles($user->id, $data, $request->get('roles'));
66+
67+
return response()->json([
68+
'errors' => false,
69+
'message' => trans('user::messages.user updated'),
70+
]);
71+
}
72+
73+
public function destroy(User $user)
74+
{
75+
$this->user->delete($user->id);
76+
77+
return response()->json([
78+
'errors' => false,
79+
'message' => trans('user::messages.user deleted'),
80+
]);
81+
}
82+
83+
public function sendResetPassword(User $user, Authentication $auth)
84+
{
85+
$code = $auth->createReminderCode($user);
86+
87+
event(new UserHasBegunResetProcess($user, $code));
88+
89+
return response()->json([
90+
'errors' => false,
91+
'message' => trans('user::auth.reset password email was sent'),
92+
]);
93+
}
94+
95+
/**
96+
* @param Request $request
97+
* @return array
98+
*/
99+
private function mergeRequestWithPermissions(Request $request) : array
100+
{
101+
$permissions = $this->permissions->clean($request->get('permissions'));
102+
103+
return array_merge($request->all(), ['permissions' => $permissions]);
104+
}
105+
}

Modules/User/Http/apiRoutes.php

+5
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,11 @@
7474
'uses' => 'UserController@update',
7575
'middleware' => 'token-can:user.users.edit',
7676
]);
77+
$router->get('{user}/sendResetPassword', [
78+
'as' => 'api.user.user.sendResetPassword',
79+
'uses' => 'UserController@sendResetPassword',
80+
'middleware' => 'token-can:user.users.edit',
81+
]);
7782
$router->delete('{user}', [
7883
'as' => 'api.user.user.destroy',
7984
'uses' => 'UserController@destroy',

0 commit comments

Comments
 (0)