3 namespace Oxbow\Http\Controllers;
5 use Illuminate\Http\Request;
7 use Illuminate\Support\Facades\Hash;
8 use Oxbow\Http\Requests;
9 use Oxbow\Services\SocialAuthService;
12 class UserController extends Controller
18 * UserController constructor.
21 public function __construct(User $user)
24 parent::__construct();
28 * Display a listing of the users.
32 public function index()
34 $users = $this->user->all();
35 return view('users/index', ['users' => $users]);
39 * Show the form for creating a new user.
43 public function create()
45 $this->checkPermission('user-create');
46 return view('users/create');
50 * Store a newly created user in storage.
52 * @param Request $request
55 public function store(Request $request)
57 $this->checkPermission('user-create');
58 $this->validate($request, [
60 'email' => 'required|email',
61 'password' => 'required|min:5',
62 'password-confirm' => 'required|same:password',
63 'role' => 'required|exists:roles,id'
66 $user = $this->user->fill($request->all());
67 $user->password = Hash::make($request->get('password'));
70 $user->attachRoleId($request->get('role'));
71 return redirect('/users');
76 * Show the form for editing the specified user.
79 * @param SocialAuthService $socialAuthService
82 public function edit($id, SocialAuthService $socialAuthService)
84 $this->checkPermissionOr('user-update', function () use ($id) {
85 return $this->currentUser->id == $id;
88 $user = $this->user->findOrFail($id);
89 $activeSocialDrivers = $socialAuthService->getActiveDrivers();
90 return view('users/edit', ['user' => $user, 'activeSocialDrivers' => $activeSocialDrivers]);
94 * Update the specified user in storage.
96 * @param Request $request
100 public function update(Request $request, $id)
102 $this->checkPermissionOr('user-update', function () use ($id) {
103 return $this->currentUser->id == $id;
105 $this->validate($request, [
106 'name' => 'required',
107 'email' => 'required|email|unique:users,email,' . $id,
108 'password' => 'min:5',
109 'password-confirm' => 'same:password',
110 'role' => 'exists:roles,id'
113 $user = $this->user->findOrFail($id);
114 $user->fill($request->except('password'));
116 if ($this->currentUser->can('user-update') && $request->has('role')) {
117 $user->attachRoleId($request->get('role'));
120 if ($request->has('password') && $request->get('password') != '') {
122 $password = $request->get('password');
123 $user->password = Hash::make($password);
126 return redirect('/users');
130 * Show the user delete page.
132 * @return \Illuminate\View\View
134 public function delete($id)
136 $this->checkPermissionOr('user-delete', function () use ($id) {
137 return $this->currentUser->id == $id;
139 $user = $this->user->findOrFail($id);
140 return view('users/delete', ['user' => $user]);
144 * Remove the specified user from storage.
149 public function destroy($id)
151 $this->checkPermissionOr('user-delete', function () use ($id) {
152 return $this->currentUser->id == $id;
154 $user = $this->user->findOrFail($id);
156 return redirect('/users');