/** * Delete an existing role. * * This method is accessed by a form on the {@link AdminController::manageRoles} * page to allow for the deletion of admin created roles. Default system roles * (authenticated, guest, and admin) cannot be deleted this way. */ public function actionDeleteRole() { $auth = Yii::app()->authManager; if (isset($_POST['role']) && !in_array($_POST['role'], array('authenticated', 'guest', 'admin'))) { $id = $_POST['role']; $role = Roles::model()->findByAttributes(array('name' => $id)); if (!isset($role)) { // Nonexistent role Yii::app()->user->setFlash('error', Yii::t('admin', 'Role does not exist')); $this->redirect('manageRoles'); } $id = $role->id; $userRoles = RoleToUser::model()->findAllByAttributes(array('roleId' => $role->id)); foreach ($userRoles as $userRole) { $userRole->delete(); } $permissions = RoleToPermission::model()->findAllByAttributes(array('roleId' => $role->id)); foreach ($permissions as $permission) { $permission->delete(); } $workflowRoles = RoleToWorkflow::model()->findAllByAttributes(array('replacementId' => $role->id)); foreach ($workflowRoles as $workflow) { $workflow->delete(); } $auth->removeAuthItem($role->name); $role->delete(); $this->redirect('manageRoles'); } }
public function actionDeleteRole() { $roles = Roles::model()->findAll(); if (isset($_POST['role'])) { $id = $_POST['role']; $role = Roles::model()->findByAttributes(array('name' => $id)); $id = $role->id; $userRoles = RoleToUser::model()->findAllByAttributes(array('roleId' => $role->id)); foreach ($userRoles as $userRole) { $userRole->delete(); } $permissions = RoleToPermission::model()->findAllByAttributes(array('roleId' => $role->id)); foreach ($permissions as $permission) { $permission->delete(); } $workflowRoles = RoleToWorkflow::model()->findAllByAttributes(array('replacementId' => $role->id)); foreach ($workflowRoles as $workflow) { $workflow->delete(); } $role->delete(); $this->redirect('manageRoles'); } $this->render('deleteRole', array('roles' => $roles)); }