Exemplo n.º 1
0
 public function username_existe($attribute, $params)
 {
     //Buscar el username en la tabla
     $table = UsuarioDB::find()->where("username=:username", [":username" => $this->username]);
     //Si el username existe mostrar el error
     if ($table->count() == 1) {
         $this->addError($attribute, "El usuario seleccionado existe");
     }
 }
Exemplo n.º 2
0
 public function actionSign_in()
 {
     $this->layout = 'frontoffice';
     //Creamos la instancia con el model de validación
     $model = new SignIn();
     //Mostrará un mensaje en la vista cuando el usuario se haya registrado
     $msg = null;
     //Validación mediante ajax
     if ($model->load(Yii::$app->request->post()) && Yii::$app->request->isAjax) {
         Yii::$app->response->format = Response::FORMAT_JSON;
         return ActiveForm::validate($model);
     }
     //Validación cuando el formulario es enviado vía post
     //Esto sucede cuando la validación ajax se ha llevado a cabo correctamente
     //También previene por si el usuario tiene desactivado javascript y la
     //validación mediante ajax no puede ser llevada a cabo
     if ($model->load(Yii::$app->request->post())) {
         if ($model->validate()) {
             //Preparamos la consulta para guardar el usuario
             $table = new UsuarioDB();
             $table->username = $model->username;
             $table->nombre = $model->nombre;
             $table->apellido = $model->apellido;
             $table->edad = $model->edad;
             $table->sexo = $model->sexo;
             $table->email = $model->email;
             //Encriptamos el password
             $table->password = crypt($model->password, Yii::$app->params["salt"]);
             //Creamos una cookie para autenticar al usuario cuando decida recordar la sesión, esta misma
             //clave será utilizada para activar el usuario
             $table->authKey = $this->randKey("abcdef0123456789", 200);
             //Creamos un token de acceso único para el usuario
             $table->accessToken = $this->randKey("abcdef0123456789", 200);
             //Si el registro es guardado correctamente
             if ($table->insert()) {
                 //Nueva consulta para obtener el id del usuario
                 //Para confirmar al usuario se requiere su id y su authKey
                 $user = $table->find()->where(["email" => $model->email])->one();
                 $id = urlencode($user->id);
                 $authKey = urlencode($user->authKey);
                 $subject = "Confirmar registro - El Oferton!";
                 $body = "<h1>Haga click en el siguiente enlace para finalizar tu registro</h1>";
                 $body .= "<a href='http://obligatoriophp-lordnicus.c9.io/index.php?r=site/confirm&id=" . $id . "&authKey=" . $authKey . "'>Confirmar</a>";
                 //Enviamos el correo
                 Yii::$app->mailer->compose()->setTo($user->email)->setFrom([Yii::$app->params["adminEmail"] => Yii::$app->params["title"]])->setSubject($subject)->setHtmlBody($body)->send();
                 $model->username = null;
                 $model->nombre = null;
                 $model->apellido = null;
                 $model->edad = null;
                 $model->sexo = 0;
                 $model->email = null;
                 $model->password = null;
                 $model->password_repeat = null;
                 $msg = "Felicidades, ahora sólo falta que confirmes tu registro en tu cuenta de correo";
             } else {
                 $msg = "Ha ocurrido un error al llevar a cabo tu registro";
             }
         } else {
             $model->getErrors();
         }
     }
     return $this->render('signIn', ['model' => $model, "msg" => $msg]);
     //return $this->render("register", ["model" => $model, "msg" => $msg]);
 }