<?php
-namespace Oxbow\Http\Controllers;
+namespace BookStack\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
-use Oxbow\Http\Requests;
-use Oxbow\User;
+use BookStack\Http\Requests;
+use BookStack\Repos\UserRepo;
+use BookStack\Services\SocialAuthService;
+use BookStack\User;
class UserController extends Controller
{
protected $user;
+ protected $userRepo;
/**
* UserController constructor.
* @param $user
*/
- public function __construct(User $user)
+ public function __construct(User $user, UserRepo $userRepo)
{
$this->user = $user;
+ $this->userRepo = $userRepo;
parent::__construct();
}
public function index()
{
$users = $this->user->all();
+ $this->setPageTitle('Users');
return view('users/index', ['users' => $users]);
}
]);
$user = $this->user->fill($request->all());
- $user->password = Hash::make($request->get('password'));
+ $user->password = bcrypt($request->get('password'));
$user->save();
$user->attachRoleId($request->get('role'));
/**
* Show the form for editing the specified user.
*
- * @param int $id
+ * @param int $id
+ * @param SocialAuthService $socialAuthService
* @return Response
*/
- public function edit($id)
+ public function edit($id, SocialAuthService $socialAuthService)
{
$this->checkPermissionOr('user-update', function () use ($id) {
return $this->currentUser->id == $id;
});
+
$user = $this->user->findOrFail($id);
- return view('users/edit', ['user' => $user]);
+ $activeSocialDrivers = $socialAuthService->getActiveDrivers();
+ $this->setPageTitle('User Profile');
+ return view('users/edit', ['user' => $user, 'activeSocialDrivers' => $activeSocialDrivers]);
}
/**
]);
$user = $this->user->findOrFail($id);
- $user->fill($request->all());
+ $user->fill($request->except('password'));
if ($this->currentUser->can('user-update') && $request->has('role')) {
$user->attachRoleId($request->get('role'));
if ($request->has('password') && $request->get('password') != '') {
$password = $request->get('password');
- $user->password = Hash::make($password);
+ $user->password = bcrypt($password);
}
$user->save();
return redirect('/users');
return $this->currentUser->id == $id;
});
$user = $this->user->findOrFail($id);
+ $this->setPageTitle('Delete User ' . $user->name);
return view('users/delete', ['user' => $user]);
}
$this->checkPermissionOr('user-delete', function () use ($id) {
return $this->currentUser->id == $id;
});
- $user = $this->user->findOrFail($id);
+ $user = $this->userRepo->getById($id);
+ // Delete social accounts
+ if($this->userRepo->isOnlyAdmin($user)) {
+ session()->flash('error', 'You cannot delete the only admin');
+ return redirect($user->getEditUrl());
+ }
+ $user->socialAccounts()->delete();
$user->delete();
return redirect('/users');
}