mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Implement RBAC (only built in roles) (#15212)
* Install bouncer * Seeder and level migration * Display and edit roles * remove unused deluser page * Update Radius and SSO to assign roles * update AlertUtil direct level check to use roles instead * rewrite ircbot auth handling * Remove legacy auth getUserlist and getUserlevel methods, add getRoles Set roles in LegacyUserProvider * Small cleanups * centralize role sync code show roles on user preferences page * VueSelect component WIP and a little docs * WIP * SelectControllers id and text fields. * LibrenmsSelect component extracted from SettingSelectDynamic * Handle multiple selections * allow type coercion * full width settings * final style adjustments * Final compiled assets update * Style fixes * Fix SSO tests * Lint cleanups * small style fix * don't use json yet * Update baseline for usptream package issues * Change schema, not 100% sure it is correct not sure why xor doesn't work
This commit is contained in:
@@ -74,7 +74,7 @@ class UserController extends Controller
|
||||
$this->authorize('create', User::class);
|
||||
|
||||
$tmp_user = new User;
|
||||
$tmp_user->can_modify_passwd = (int) LegacyAuth::get()->canUpdatePasswords(); // default to true for new users
|
||||
$tmp_user->can_modify_passwd = LegacyAuth::getType() == 'mysql' ? 1 : 0; // default to true mysql
|
||||
|
||||
return view('user.create', [
|
||||
'user' => $tmp_user,
|
||||
@@ -92,13 +92,14 @@ class UserController extends Controller
|
||||
*/
|
||||
public function store(StoreUserRequest $request, FlasherInterface $flasher)
|
||||
{
|
||||
$user = $request->only(['username', 'realname', 'email', 'descr', 'level', 'can_modify_passwd']);
|
||||
$user = $request->only(['username', 'realname', 'email', 'descr', 'can_modify_passwd']);
|
||||
$user['auth_type'] = LegacyAuth::getType();
|
||||
$user['can_modify_passwd'] = $request->get('can_modify_passwd'); // checkboxes are missing when unchecked
|
||||
|
||||
$user = User::create($user);
|
||||
|
||||
$user->setPassword($request->new_password);
|
||||
$user->setRoles($request->get('roles', []));
|
||||
$user->auth_id = (string) LegacyAuth::get()->getUserid($user->username) ?: $user->user_id;
|
||||
$this->updateDashboard($user, $request->get('dashboard'));
|
||||
$this->updateTimezone($user, $request->get('timezone'));
|
||||
@@ -184,6 +185,7 @@ class UserController extends Controller
|
||||
}
|
||||
|
||||
$user->fill($request->validated());
|
||||
$user->setRoles($request->get('roles', []));
|
||||
|
||||
if ($request->has('dashboard') && $this->updateDashboard($user, $request->get('dashboard'))) {
|
||||
$flasher->addSuccess(__('Updated dashboard for :username', ['username' => $user->username]));
|
||||
|
||||
Reference in New Issue
Block a user