Ver código fonte

skip api error when email is not set

Oleg K 4 anos atrás
pai
commit
1a0ba63c9c
3 arquivos alterados com 25 adições e 1 exclusões
  1. 15 0
      models/user/User.php
  2. 2 1
      modules/api/controllers/UserController.php
  3. 8 0
      web/.htaccess

+ 15 - 0
models/user/User.php

@@ -8,6 +8,7 @@ use dektrium\user\models\Token;
 use Exception;
 use RuntimeException;
 use Yii;
+use yii\helpers\ArrayHelper;
 use yii\helpers\Html;
 use yii\helpers\Url;
 
@@ -42,6 +43,14 @@ class User extends BaseUser
         ];
     }
 
+    public function scenarios()
+    {
+        $scenarios = parent::scenarios();
+        return ArrayHelper::merge($scenarios, [
+            'api' => ['username', 'password'],
+        ]);
+    }
+
     /** @inheritdoc */
     public function rules()
     {
@@ -68,10 +77,16 @@ class User extends BaseUser
 
 
             // email rules
+            'emailIsEmpty' => ['email', 'default', 'value' => function($model){return empty($model->email) ? $model->username . '@example.com': $model->email;}],
             'emailTrim'     => ['email', 'trim'],
             'emailRequired' => ['email', 'required', 'on' => ['register', 'connect', 'create', 'update']],
             'emailPattern'  => ['email', 'email'],
             'emailLength'   => ['email', 'string', 'max' => 255],
+            'emailUnique2'   => [
+                'email',
+                'unique',
+                'except' => ['api']
+            ],
             'emailUnique'   => [
                 'email',
                 'unique',

+ 2 - 1
modules/api/controllers/UserController.php

@@ -20,6 +20,7 @@ class UserController extends ActiveController
 
         foreach ($requestParams as $param){
             $user = new User();
+            $user->setScenario('api');
             $user->uuid = $param['uuid'];
             $user->fio = $param['fio'];
             $user->cname = $param['cname'];
@@ -29,7 +30,7 @@ class UserController extends ActiveController
             $user->username = $param['username'];
             $user->password = $param['password'];
 
-            $user->save(false);
+            $user->save();
         }
 
 

+ 8 - 0
web/.htaccess

@@ -1,3 +1,11 @@
+<IfModule mod_headers.c>
+    Header set Access-Control-Allow-Origin *
+    Header set Access-Control-Allow-Methods "GET, HEAD, OPTIONS, POST, PUT, PATCH, DELETE"
+    Header set Access-Control-Allow-Headers "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With, Enctype"
+</IfModule>
+
+SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
+
 RewriteEngine on
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f