CakePHP のログイン アクションに and if/else を追加しようとしています。ログイン アクションには多数の行があり、LoginValidate の後に if/else を追加すると、ログイン アクションの括弧が正しく閉じません。
セッションは書き込まれますが、崇高なテキスト 2 でブラケット ハイライターを使用すると、一番上のブラケットがハイライトされません。これがコードです。私がやろうとしているのは、KCFinder のセッション変数を、ユーザーが UserGroup の「Admin」にない場合は「true」、ユーザーが UserGroup の「Admin」にある場合は false に書き込むことです。
public function login() {
print_r($this -> Session -> read());
if ($this->request -> isPost()) {
$this->User->set($this->data);
if($this->User->LoginValidate()) {
$email = $this->data['User']['email'];
$password = $this->data['User']['password'];
$user = $this->User->findByUsername($email);
$UserGroup = $this->User->UserGroup;
if (empty($user)) {
$user = $this->User->findByEmail($email);
if (empty($user)) {
$this->Session->setFlash(__('Incorrect Email/Username or Password'));
return;
}
}
//write session value for kcfinder
if ($user['UserGroup']['name']='Admin') {
$this -> Session -> write("kcfinder", "false");
$_SESSION['KCFINDER']['disabled']=false; //config from ckfinder
} else {
$this -> Session -> write("kcfinder", "true");
return;
}
// check for inactive account
if ($user['User']['id'] != 1 and $user['User']['active']==0) {
$this->Session->setFlash(__('Sorry your account is not active, please contact to Administrator'));
return;
}
// check for verified account
if ($user['User']['id'] != 1 and $user['User']['email_verified']==0) {
$this->Session->setFlash(__('Your registration has not been confirmed please verify your email or contact to Administrator'));
return;
}
if(empty($user['User']['salt'])) {
$hashed = md5($password);
} else {
$hashed = $this->UserAuth->makePassword($password, $user['User']['salt']);
}
if ($user['User']['password'] === $hashed) {
if(empty($user['User']['salt'])) {
$salt=$this->UserAuth->makeSalt();
$user['User']['salt']=$salt;
$user['User']['password']=$this->UserAuth->makePassword($password, $salt);
$this->User->save($user,false);
}
$this->UserAuth->login($user);
$remember = (!empty($this->data['User']['remember']));
if ($remember) {
$this->UserAuth->persist('2 weeks');
}
$OriginAfterLogin=$this->Session->read('Usermgmt.OriginAfterLogin');
$this->Session->delete('Usermgmt.OriginAfterLogin');
$redirect = (!empty($OriginAfterLogin)) ? $OriginAfterLogin : LOGIN_REDIRECT_URL;
$this->redirect($redirect);
} else {
$this->Session->setFlash(__('Incorrect Email/Username or Password'));
return;
}
}
}
}
追加のポイント:
1) このコードは、http: //usermgmt.ektasoftwares.comのユーザー管理プラグインからのものです。
2)追加したセクションは次のとおりです。
//write session value for kcfinder
if ($user['UserGroup']['name']='Admin') {
$this -> Session -> write("kcfinder", "false");
$_SESSION['KCFINDER']['disabled']=false; //config from ckfinder
} else {
$this -> Session -> write("kcfinder", "true");
return;
}
私のセッション セクションを追加した結果、一番上の 2 つのブラケットが適切に強調表示されません (これも崇高な text2 で強調表示プラグインを使用しています)。
コメントと入力をありがとう。