user()->inGroup('admin', 'superadmin')) return redirect()->to('/hi')->with('error', 'You do not have access to User Maintenance page.'); } public function index() { $this->superadminAndAdminOnly(); $users = auth()->getProvider()->findAll(); $htmlTable = new \CodeIgniter\View\Table(); $htmlTable->setTemplate($this->adminLTETableTemplate()); $data['tblUsers'] = ""; if($users == null) { $data['tblUsers'] = '
No users found.
'; } else { $htmlTable->setHeading('Employee ID', 'Username', 'Email', 'Display Name', 'Active', 'Action'); foreach($users as $user) { if(!auth()->user()->inGroup('superadmin') && $user->inGroup('superadmin')) continue; //$iconView = ''; $iconView = ''; $iconEdit = 'id . '" data-employeeid="' . $user->employee_id . '" data-displayname="' . $user->display_name . '" data-username="' . $user->username . '" data-email="' . $user->email . '" data-active="' . $user->active . '" onclick="GetUserByIdForEdit(this)">'; $iconDelete = ''; $iconUserGroup = ''; $iconUserPermission = ''; $iconChangePass = 'id . '" data-displayname="' . $user->display_name . '" data-username="' . $user->username . '" onclick="GetUserByIdForPassEdit(this)" data-toggle="tooltip" title="Change Password">'; $htmlTable->addRow($user->employee_id, $user->username, $user->email, $user->display_name, $user->active ? "Yes" : "No", "$iconView $iconEdit $iconUserGroup $iconUserPermission $iconChangePass $iconDelete"); } $data['tblUsers'] = $htmlTable->generate(); } return view('admin/usermaintenance', $data); } public function newUserView() { $this->superadminAndAdminOnly(); return view('admin/newuserview'); } public function saveNewUser() { // Get the User Provider (UserModel by default) $users = auth()->getProvider(); $user = new User([ 'username' => $this->request->getPost('username'), 'email' => $this->request->getPost('email'), 'password' => $this->request->getPost('password'), 'employee_id' => $this->request->getPost('employee_id'), 'display_name' => $this->request->getPost('display_name'), ]); if($users->save($user)) { // To get the complete user object with ID, we need to get from the database $user = $users->findById($users->getInsertID()); // Add to default group $users->addToDefaultGroup($user); // Activate user $user->activate(); return redirect()->to('/adminuser')->with('message', "{$user->display_name} user added."); } else return redirect()->back()->with('error', 'User creation failed.'); } public function editUserGroupView($id) { $this->superadminAndAdminOnly(); $user = auth()->getProvider()->findById($id); $data['user'] = $user; $data['allgroups'] = $this->getAllGroupsWithMembership($user); return view('admin/editusergroupview', $data); } public function saveEditedUserGroup() { $selectedGroups = $this->request->getPost('membershipgroups'); $userid = $this->request->getPost('id'); $user = auth()->getProvider()->findById($userid); call_user_func_array([$user, 'syncGroups'], $selectedGroups); return redirect()->back()->with('message', 'User Group Updated.'); } public function editUserPermissionView($id) { $this->superadminAndAdminOnly(); $user = auth()->getProvider()->findById($id); $data['user'] = $user; $data['membershipgroups'] = $this->getAllowedPermissionHierarchy($user); $data['allgroups'] = $this->getAllGroupsWithMembership($user); return view('admin/edituserpermissionview', $data); } public function updateUser() { // Get the User Provider (UserModel by default) $users = auth()->getProvider(); $id = $this->request->getPost('id'); $email = $this->request->getPost('email'); $employeeid = $this->request->getPost('employee_id'); $displayname = $this->request->getPost('display_name'); $active = $this->request->getPost('active'); $user = $users->findById($id); $user->fill([ 'email' => $email, 'employee_id' => $employeeid, 'display_name' => $displayname, 'active' => $active ? 1 : 0 ]); $users->save($user); return redirect()->to('/adminuser')->with('message', 'User updated successfully.'); } public function updateUserPass() { // Get the User Provider (UserModel by default) $users = auth()->getProvider(); $id = $this->request->getPost('id'); $password = $this->request->getPost('password'); $user = $users->findById($id); $user->fill([ 'password' => $password ]); $users->save($user); return redirect()->to('/adminuser')->with('message', 'User updated successfully.'); } public function deleteUser() { $user = auth()->getProvider()->findById($this->request->getPost('id')); $result = $user->delete($user->id, false); if($result) return redirect()->to('/adminuser')->with('message', 'User updated successfully.'); else return redirect()->to('/adminuser')->with('error', 'User deletion failed.'); } public function newUserFromEmployeeList() { $data['employeeList'] = (new EmployeeModel())->findAll(); return view('admin/newuserfromemplist', $data); } public function createUserFromEmployeeList($employeeid) { $users = auth()->getProvider(); $employee = (new EmployeeModel())->where(['company_issued_id' => $employeeid, 'deleted_at' => NULL])->first(); $user = new User([ 'username' => $employee->company_issued_id, 'email' => $employee->email_address, 'password' => $employee->company_issued_id, 'employee_id' => $employee->company_issued_id, 'display_name' => $employee->first_name." ".$employee->last_name, ]); if($users->save($user)) { // To get the complete user object with ID, we need to get from the database $user = $users->findById($users->getInsertID()); // Add to default group $users->addToDefaultGroup($user); // Activate user $user->activate(); return redirect()->back()->with('message', 'User created successfully.'); } else return redirect()->back()->with('error', 'User creation failed.'); } // Methods called by AJAX and return JSON public function getUserById($id) { $this->superadminAndAdminOnly(); $user = auth()->getProvider()->findById($id); $data['user'] = $user; $data['groups'] = $user->getGroups(); $data['permissions'] = $this->getAllowedPermissionHierarchy($user); return $this->response->setJSON($data); } // .Methods called by AJAX and return JSON // Class specific methods private function adminLTETableTemplate() { $template = [ 'table_open' => '