/**
  * Store role
  *
  * @param array $roleData            
  * @throws NotFoundException, ValidationException
  * @return \App\Models\RoleModel
  */
 public function store($roleData)
 {
     try {
         if (array_get($roleData, 'id')) {
             $role = RoleModel::findOrFail((int) array_get($roleData, 'id'))->fill($roleData);
         } else {
             $role = new RoleModel();
             $role->fill($roleData);
         }
     } catch (Exception $e) {
         throw new NotFoundException(trans('app.notFound'));
     }
     if (!$role->validate()) {
         throw new ValidationException(trans('app.correctErrors'), $role->errors()->toArray());
     }
     try {
         $role->save();
         // associate permissions
         if (array_get($roleData, 'permission_id')) {
             $role->perms()->sync(array_get($roleData, 'permission_id'));
         }
     } catch (Exception $e) {
         throw $e;
     }
     return $role;
 }
Exemple #2
0
 /**
  * Creates a new Role model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $model = new Role();
     $searchModel = new PermissionSearch();
     $dataProvider = $searchModel->search([]);
     if ($model->load(Yii::$app->request->post())) {
         $postData = Yii::$app->request->post();
         $model->createdAt = Yii::$app->util->getUtcDateTime();
         $model->createdById = Yii::$app->user->identity->id;
         if (!empty($postData['selection'])) {
             if ($model->validate()) {
                 try {
                     if ($model->save()) {
                         Yii::$app->session->setFlash('success', Yii::t('app', 'Role created'));
                         foreach ($postData['selection'] as $permission) {
                             $modelRolePermission = new RolePermission();
                             $modelRolePermission->roleName = $model->name;
                             $modelRolePermission->permissionName = $permission;
                             try {
                                 $modelRolePermission->save();
                             } catch (Exception $e) {
                             }
                         }
                         return $this->redirect(['index']);
                     } else {
                         Yii::$app->session->setFlash('success', Yii::t('app', 'Role create failed'));
                     }
                 } catch (Exception $e) {
                     if ($e->getCode() == 11000) {
                         Yii::$app->session->setFlash('error', Yii::t('app', 'Role exists'));
                     } else {
                         Yii::$app->session->setFlash('error', Yii::t('app', 'Role create failed'));
                     }
                 }
             }
         } else {
             Yii::$app->session->setFlash('error', Yii::t('app', 'Please select atleast one permission'));
         }
     }
     return $this->render('create', ['model' => $model, 'dataProvider' => $dataProvider]);
 }