/** @inheritdoc */ public function afterSave($insert, $changedAttributes) { parent::afterSave($insert, $changedAttributes); if ($insert) { if ($this->_profile == null) { $this->_profile = Yii::createObject(Profile::className()); } $this->_profile->link('user', $this); } if ($insert) { $this->assignRoles(); } if ($this->scenario == self::SCENARIO_UPDATE_ROLES) { $auth = Yii::$app->authManager; $auth->revokeAll($this->id); foreach ($this->_roles as $role) { $auth->assign($auth->getRole($role), $this->id); } } }
/** * Updates an existing profile. * * @param int $id * * @return mixed */ public function actionUpdateProfile($id) { Url::remember('', 'actions-redirect'); $user = $this->findModel($id); $profile = $user->profile; if ($profile == null) { $profile = new Profile(); $profile->link('user', $user); } $event = $this->getProfileEvent($profile); $this->performAjaxValidation($profile); $this->trigger(self::EVENT_BEFORE_PROFILE_UPDATE, $event); if ($profile->load(Yii::$app->request->post()) && $profile->save()) { Yii::$app->getSession()->setFlash('success', Yii::t('users', 'Profile details have been updated')); $this->trigger(self::EVENT_AFTER_PROFILE_UPDATE, $event); return $this->refresh(); } return $this->render('_profile', ['user' => $user, 'profile' => $profile]); }