$this->addField(['name' => 'e1_ws_grade',
'type' => 'Hidden']);
}
+
+ public function isOwner($user)
+ {
+ if (null === $user) {
+ return false;
+ }
+ /** @var $user User */
+ return in_array($this->id, $user->getManagedCompanies());
+ }
}
protected function setupLoginasDefaults()
{
- if (can('manageusers')) {
- $this->crud->addButtonFromView('line', 'loginas', 'user.loginas', 'end');
- }
+ $this->crud->addButtonFromView('line', 'loginas', 'user.loginas', 'end');
}
protected function loginas($id)
{
- if (can('manageusers')) {
- $user = User::find($id);
- backpack_auth()->login($user);
- }
+ $user = User::find($id);
+ backpack_auth()->login($user);
return redirect('dashboard');
}
+
+ public function canLoginas($user)
+ {
+ return $this->isOwner($user);
+ }
}
}
return [];
}
+
+
+ /**
+ * @param $user integer
+ * @return array
+ */
+ public static function getManagedCompanies($user)
+ {
+ $data = self::_getData();
+ if (isset($data['managedCompanies'][$user])) {
+ return $data['managedCompanies'][$user];
+ }
+ return [];
+ }
}
'type' => 'Locale',
'tab' => 'Settings']);
- $extranetv1 = ['settings', 'ws_password', 'ws_settings', 'ws_rights', 'ws_domains','ws_count', 'login', 'mobile', 'fax', 'notes', 'grade', 'resetpassword'];
+ $extranetv1 = ['settings', 'ws_password', 'ws_settings', 'ws_rights', 'ws_domains', 'ws_count', 'login', 'mobile', 'fax', 'notes', 'grade', 'resetpassword'];
foreach ($extranetv1 as $f) {
$this->addField(['name' => 'e1_' . $f,
return $res;
}
+ public function getManagedCompanies()
+ {
+ start_measure('_get_managed_companies', 'Get managed companies');
+ $res = Permissions::getManagedCompanies($this->id);
+ stop_measure('_get_managed_companies');
+ return $res;
+ }
+
+ public function isOwner($user)
+ {
+ if (null === $user) {
+ return false;
+ }
+ /** @var $user self */
+ return in_array($this->id, $user->getManagedUsers());
+ }
+
}