3 namespace Oxbow\Http\Controllers;
5 use Illuminate\Http\Request;
7 use Illuminate\Support\Facades\Hash;
8 use Oxbow\Http\Requests;
11 class UserController extends Controller
17 * UserController constructor.
20 public function __construct(User $user)
23 parent::__construct();
27 * Display a listing of the users.
31 public function index()
33 $users = $this->user->all();
34 return view('users/index', ['users' => $users]);
38 * Show the form for creating a new user.
42 public function create()
44 $this->checkPermission('user-create');
45 return view('users/create');
49 * Store a newly created user in storage.
51 * @param Request $request
54 public function store(Request $request)
56 $this->checkPermission('user-create');
57 $this->validate($request, [
59 'email' => 'required|email',
60 'password' => 'required|min:5',
61 'password-confirm' => 'required|same:password',
62 'role' => 'required|exists:roles,id'
65 $user = $this->user->fill($request->all());
66 $user->password = Hash::make($request->get('password'));
69 $user->attachRoleId($request->get('role'));
70 return redirect('/users');
75 * Show the form for editing the specified user.
80 public function edit($id)
82 $this->checkPermissionOr('user-update', function () use ($id) {
83 return $this->currentUser->id == $id;
85 $user = $this->user->findOrFail($id);
86 return view('users/edit', ['user' => $user]);
90 * Update the specified user in storage.
92 * @param Request $request
96 public function update(Request $request, $id)
98 $this->checkPermissionOr('user-update', function () use ($id) {
99 return $this->currentUser->id == $id;
101 $this->validate($request, [
102 'name' => 'required',
103 'email' => 'required|email|unique:users,email,' . $id,
104 'password' => 'min:5',
105 'password-confirm' => 'same:password',
106 'role' => 'exists:roles,id'
109 $user = $this->user->findOrFail($id);
110 $user->fill($request->all());
112 if ($this->currentUser->can('user-update') && $request->has('role')) {
113 $user->attachRoleId($request->get('role'));
116 if ($request->has('password') && $request->get('password') != '') {
117 $password = $request->get('password');
118 $user->password = Hash::make($password);
121 return redirect('/users');
125 * Show the user delete page.
127 * @return \Illuminate\View\View
129 public function delete($id)
131 $this->checkPermissionOr('user-delete', function () use ($id) {
132 return $this->currentUser->id == $id;
134 $user = $this->user->findOrFail($id);
135 return view('users/delete', ['user' => $user]);
139 * Remove the specified user from storage.
144 public function destroy($id)
146 $this->checkPermissionOr('user-delete', function () use ($id) {
147 return $this->currentUser->id == $id;
149 $user = $this->user->findOrFail($id);
151 return redirect('/users');