From b1667120395e10ce12a3665d17455d2c35ef7e8a Mon Sep 17 00:00:00 2001 From: jack Date: Wed, 25 Apr 2018 17:44:18 +0800 Subject: [PATCH] added vendor to dockerignore added doctrine for renaming database column changed email to phone number added confirm_password upon signup --- .dockerignore | 1 + .gitignore | 1 + Dockerfile | 2 +- app/Http/Controllers/AuthController.php | 31 +- app/User.php | 2 +- composer.json | 3 +- composer.lock | 373 +++++++++++++++++- config/jwt.php | 303 ++++++++++++++ data/mysql/default/migrations.ibd | Bin 98304 -> 98304 bytes data/mysql/default/user_verifications.ibd | Bin 114688 -> 114688 bytes data/mysql/default/users.frm | Bin 8834 -> 8834 bytes data/mysql/default/users.ibd | Bin 114688 -> 114688 bytes data/mysql/ib_logfile0 | Bin 50331648 -> 50331648 bytes data/mysql/ibdata1 | Bin 12582912 -> 12582912 bytes data/mysql/mysql/innodb_index_stats.ibd | Bin 98304 -> 98304 bytes data/mysql/mysql/innodb_table_stats.ibd | Bin 98304 -> 98304 bytes ...84609_change_email_to_mobile_from_user.php | 30 ++ 17 files changed, 720 insertions(+), 26 deletions(-) create mode 100644 .dockerignore create mode 100644 config/jwt.php create mode 100644 database/migrations/2018_04_25_084609_change_email_to_mobile_from_user.php diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..5657f6e --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +vendor \ No newline at end of file diff --git a/.gitignore b/.gitignore index 67c0aea..e283f19 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ /.idea /.vscode /.vagrant +/data Homestead.json Homestead.yaml npm-debug.log diff --git a/Dockerfile b/Dockerfile index f78c24a..678de57 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,6 @@ RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local RUN docker-php-ext-install pdo pdo_mysql WORKDIR /app COPY . /app -RUN composer install +RUN composer update CMD php artisan serve --host=0.0.0.0 --port=8000 EXPOSE 8000 \ No newline at end of file diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index b355764..1330681 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -16,31 +16,34 @@ class AuthController extends Controller */ public function register(Request $request) { - $credentials = $request->only('name', 'email', 'password'); + $credentials = $request->only('name', 'phone', 'password', 'confirm_password'); $rules = [ 'name' => 'required|max:255', - 'email' => 'required|email|max:255|unique:users' + 'phone' => 'required|digits:10|unique:users', + 'password' => 'required', + 'confirm_password' => 'required', + ]; $validator = Validator::make($credentials, $rules); if($validator->fails()) { return response()->json(['success'=> false, 'error'=> $validator->messages()]); } $name = $request->name; - $email = $request->email; + $phone = $request->phone; $password = $request->password; - $user = User::create(['name' => $name, 'email' => $email, 'password' => Hash::make($password)]); + $user = User::create(['name' => $name, 'phone' => $phone, 'password' => Hash::make($password)]); $verification_code = str_random(30); //Generate verification code DB::table('user_verifications')->insert(['user_id'=>$user->id,'token'=>$verification_code]); - $subject = "Please verify your email address."; - Mail::send('email.verify', ['name' => $name, 'verification_code' => $verification_code], - function($mail) use ($email, $name, $subject){ - $mail->from(getenv('FROM_EMAIL_ADDRESS'), "From User/Company Name Goes Here"); - $mail->to($email, $name); - $mail->subject($subject); - }); - return response()->json(['success'=> true, 'message'=> 'Thanks for signing up! Please check your email to complete your registration.']); + + /* + + Twilio here + + */ + + return response()->json(['success'=> true, 'message'=> 'A verification code has been send to your mobile number.']); } /** @@ -51,10 +54,10 @@ class AuthController extends Controller */ public function login(Request $request) { - $credentials = $request->only('email', 'password'); + $credentials = $request->only('phone', 'password'); $rules = [ - 'email' => 'required|email', + 'phone' => 'required|digits:10|unique:users', 'password' => 'required', ]; $validator = Validator::make($credentials, $rules); diff --git a/app/User.php b/app/User.php index 602279d..4ac3ae8 100644 --- a/app/User.php +++ b/app/User.php @@ -16,7 +16,7 @@ class User extends Authenticatable implements JWTSubject * @var array */ protected $fillable = [ - 'name', 'email', 'password', + 'name', 'phone', 'password' ]; /** diff --git a/composer.json b/composer.json index 9b16a71..5669321 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,8 @@ "fideloper/proxy": "^4.0", "laravel/framework": "5.6.*", "laravel/tinker": "^1.0", - "tymon/jwt-auth": "dev-develop" + "tymon/jwt-auth": "1.0.*", + "doctrine/dbal": "~2.3" }, "require-dev": { "filp/whoops": "^2.0", diff --git a/composer.lock b/composer.lock index 9b8412c..bd91384 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "f2d9e6ec1c09918f1f3130aa31e04472", + "content-hash": "b2dc446e9fbb09e9c686c1292c79098c", "packages": [ { "name": "dnoegel/php-xdg-base-dir", @@ -39,6 +39,363 @@ "description": "implementation of xdg base directory specification for php", "time": "2014-10-24T07:27:01+00:00" }, + { + "name": "doctrine/annotations", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2017-12-06T07:11:42+00:00" + }, + { + "name": "doctrine/cache", + "version": "v1.7.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "b3217d58609e9c8e661cd41357a54d926c4a2a1a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/b3217d58609e9c8e661cd41357a54d926c4a2a1a", + "reference": "b3217d58609e9c8e661cd41357a54d926c4a2a1a", + "shasum": "" + }, + "require": { + "php": "~7.1" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "alcaeus/mongo-php-adapter": "^1.1", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^5.7", + "predis/predis": "~1.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Caching library offering an object-oriented API for many cache backends", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2017-08-25T07:02:50+00:00" + }, + { + "name": "doctrine/collections", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "~0.1@dev", + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Collections\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Collections Abstraction library", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "array", + "collections", + "iterator" + ], + "time": "2017-07-22T10:37:32+00:00" + }, + { + "name": "doctrine/common", + "version": "v2.8.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/common.git", + "reference": "f68c297ce6455e8fd794aa8ffaf9fa458f6ade66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/common/zipball/f68c297ce6455e8fd794aa8ffaf9fa458f6ade66", + "reference": "f68c297ce6455e8fd794aa8ffaf9fa458f6ade66", + "shasum": "" + }, + "require": { + "doctrine/annotations": "1.*", + "doctrine/cache": "1.*", + "doctrine/collections": "1.*", + "doctrine/inflector": "1.*", + "doctrine/lexer": "1.*", + "php": "~7.1" + }, + "require-dev": { + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common Library for Doctrine projects", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "collections", + "eventmanager", + "persistence", + "spl" + ], + "time": "2017-08-31T08:43:38+00:00" + }, + { + "name": "doctrine/dbal", + "version": "v2.7.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "11037b4352c008373561dc6fc836834eed80c3b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/11037b4352c008373561dc6fc836834eed80c3b5", + "reference": "11037b4352c008373561dc6fc836834eed80c3b5", + "shasum": "" + }, + "require": { + "doctrine/common": "^2.7.1", + "ext-pdo": "*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^4.0", + "phpunit/phpunit": "^7.0", + "phpunit/phpunit-mock-objects": "!=3.2.4,!=3.2.5", + "symfony/console": "^2.0.5||^3.0", + "symfony/phpunit-bridge": "^3.4.5|^4.0.5" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\DBAL\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Database Abstraction Layer", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "persistence", + "queryobject" + ], + "time": "2018-04-07T18:44:18+00:00" + }, { "name": "doctrine/inflector", "version": "v1.3.0", @@ -2404,16 +2761,16 @@ }, { "name": "tymon/jwt-auth", - "version": "dev-develop", + "version": "1.0.0-rc.2", "source": { "type": "git", "url": "https://github.com/tymondesigns/jwt-auth.git", - "reference": "2b79229235d83523a05069ccb9c97cd5ec0b8123" + "reference": "d5220f6a84cbb8300f6f2f0f20aa908d072b4e4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tymondesigns/jwt-auth/zipball/2b79229235d83523a05069ccb9c97cd5ec0b8123", - "reference": "2b79229235d83523a05069ccb9c97cd5ec0b8123", + "url": "https://api.github.com/repos/tymondesigns/jwt-auth/zipball/d5220f6a84cbb8300f6f2f0f20aa908d072b4e4b", + "reference": "d5220f6a84cbb8300f6f2f0f20aa908d072b4e4b", "shasum": "" }, "require": { @@ -2475,7 +2832,7 @@ "jwt", "laravel" ], - "time": "2018-03-10T22:14:03+00:00" + "time": "2018-02-07T20:55:14+00:00" }, { "name": "vlucas/phpdotenv", @@ -4272,9 +4629,7 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": { - "tymon/jwt-auth": 20 - }, + "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, "platform": { diff --git a/config/jwt.php b/config/jwt.php new file mode 100644 index 0000000..c4ea92d --- /dev/null +++ b/config/jwt.php @@ -0,0 +1,303 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +return [ + + /* + |-------------------------------------------------------------------------- + | JWT Authentication Secret + |-------------------------------------------------------------------------- + | + | Don't forget to set this in your .env file, as it will be used to sign + | your tokens. A helper command is provided for this: + | `php artisan jwt:secret` + | + | Note: This will be used for Symmetric algorithms only (HMAC), + | since RSA and ECDSA use a private/public key combo (See below). + | + */ + + 'secret' => env('JWT_SECRET'), + + /* + |-------------------------------------------------------------------------- + | JWT Authentication Keys + |-------------------------------------------------------------------------- + | + | The algorithm you are using, will determine whether your tokens are + | signed with a random string (defined in `JWT_SECRET`) or using the + | following public & private keys. + | + | Symmetric Algorithms: + | HS256, HS384 & HS512 will use `JWT_SECRET`. + | + | Asymmetric Algorithms: + | RS256, RS384 & RS512 / ES256, ES384 & ES512 will use the keys below. + | + */ + + 'keys' => [ + + /* + |-------------------------------------------------------------------------- + | Public Key + |-------------------------------------------------------------------------- + | + | A path or resource to your public key. + | + | E.g. 'file://path/to/public/key' + | + */ + + 'public' => env('JWT_PUBLIC_KEY'), + + /* + |-------------------------------------------------------------------------- + | Private Key + |-------------------------------------------------------------------------- + | + | A path or resource to your private key. + | + | E.g. 'file://path/to/private/key' + | + */ + + 'private' => env('JWT_PRIVATE_KEY'), + + /* + |-------------------------------------------------------------------------- + | Passphrase + |-------------------------------------------------------------------------- + | + | The passphrase for your private key. Can be null if none set. + | + */ + + 'passphrase' => env('JWT_PASSPHRASE'), + + ], + + /* + |-------------------------------------------------------------------------- + | JWT time to live + |-------------------------------------------------------------------------- + | + | Specify the length of time (in minutes) that the token will be valid for. + | Defaults to 1 hour. + | + | You can also set this to null, to yield a never expiring token. + | Some people may want this behaviour for e.g. a mobile app. + | This is not particularly recommended, so make sure you have appropriate + | systems in place to revoke the token if necessary. + | + */ + + 'ttl' => env('JWT_TTL', 60), + + /* + |-------------------------------------------------------------------------- + | Refresh time to live + |-------------------------------------------------------------------------- + | + | Specify the length of time (in minutes) that the token can be refreshed + | within. I.E. The user can refresh their token within a 2 week window of + | the original token being created until they must re-authenticate. + | Defaults to 2 weeks. + | + | You can also set this to null, to yield an infinite refresh time. + | Some may want this instead of never expiring tokens for e.g. a mobile app. + | This is not particularly recommended, so make sure you have appropriate + | systems in place to revoke the token if necessary. + | + */ + + 'refresh_ttl' => env('JWT_REFRESH_TTL', 20160), + + /* + |-------------------------------------------------------------------------- + | JWT hashing algorithm + |-------------------------------------------------------------------------- + | + | Specify the hashing algorithm that will be used to sign the token. + | + | See here: https://github.com/namshi/jose/tree/master/src/Namshi/JOSE/Signer/OpenSSL + | for possible values. + | + */ + + 'algo' => env('JWT_ALGO', 'HS256'), + + /* + |-------------------------------------------------------------------------- + | Required Claims + |-------------------------------------------------------------------------- + | + | Specify the required claims that must exist in any token. + | A TokenInvalidException will be thrown if any of these claims are not + | present in the payload. + | + */ + + 'required_claims' => [ + 'iss', + 'iat', + 'exp', + 'nbf', + 'sub', + 'jti', + ], + + /* + |-------------------------------------------------------------------------- + | Persistent Claims + |-------------------------------------------------------------------------- + | + | Specify the claim keys to be persisted when refreshing a token. + | `sub` and `iat` will automatically be persisted, in + | addition to the these claims. + | + | Note: If a claim does not exist then it will be ignored. + | + */ + + 'persistent_claims' => [ + // 'foo', + // 'bar', + ], + + /* + |-------------------------------------------------------------------------- + | Lock Subject + |-------------------------------------------------------------------------- + | + | This will determine whether a `prv` claim is automatically added to + | the token. The purpose of this is to ensure that if you have multiple + | authentication models e.g. `App\User` & `App\OtherPerson`, then we + | should prevent one authentication request from impersonating another, + | if 2 tokens happen to have the same id across the 2 different models. + | + | Under specific circumstances, you may want to disable this behaviour + | e.g. if you only have one authentication model, then you would save + | a little on token size. + | + */ + + 'lock_subject' => true, + + /* + |-------------------------------------------------------------------------- + | Leeway + |-------------------------------------------------------------------------- + | + | This property gives the jwt timestamp claims some "leeway". + | Meaning that if you have any unavoidable slight clock skew on + | any of your servers then this will afford you some level of cushioning. + | + | This applies to the claims `iat`, `nbf` and `exp`. + | + | Specify in seconds - only if you know you need it. + | + */ + + 'leeway' => env('JWT_LEEWAY', 0), + + /* + |-------------------------------------------------------------------------- + | Blacklist Enabled + |-------------------------------------------------------------------------- + | + | In order to invalidate tokens, you must have the blacklist enabled. + | If you do not want or need this functionality, then set this to false. + | + */ + + 'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true), + + /* + | ------------------------------------------------------------------------- + | Blacklist Grace Period + | ------------------------------------------------------------------------- + | + | When multiple concurrent requests are made with the same JWT, + | it is possible that some of them fail, due to token regeneration + | on every request. + | + | Set grace period in seconds to prevent parallel request failure. + | + */ + + 'blacklist_grace_period' => env('JWT_BLACKLIST_GRACE_PERIOD', 0), + + /* + |-------------------------------------------------------------------------- + | Cookies encryption + |-------------------------------------------------------------------------- + | + | By default Laravel encrypt cookies for security reason. + | If you decide to not decrypt cookies, you will have to configure Laravel + | to not encrypt your cookie token by adding its name into the $except + | array available in the middleware "EncryptCookies" provided by Laravel. + | see https://laravel.com/docs/master/responses#cookies-and-encryption + | for details. + | + | Set it to true if you want to decrypt cookies. + | + */ + + 'decrypt_cookies' => false, + + /* + |-------------------------------------------------------------------------- + | Providers + |-------------------------------------------------------------------------- + | + | Specify the various providers used throughout the package. + | + */ + + 'providers' => [ + + /* + |-------------------------------------------------------------------------- + | JWT Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to create and decode the tokens. + | + */ + + 'jwt' => Tymon\JWTAuth\Providers\JWT\Lcobucci::class, + + /* + |-------------------------------------------------------------------------- + | Authentication Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to authenticate users. + | + */ + + 'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class, + + /* + |-------------------------------------------------------------------------- + | Storage Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to store tokens in the blacklist. + | + */ + + 'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class, + + ], + +]; diff --git a/data/mysql/default/migrations.ibd b/data/mysql/default/migrations.ibd index 255cfbf37a0dc91bf85b35b20f3a51868706dc50..29392a2757e4ea1eb015f142510e3298cacbb1a2 100644 GIT binary patch delta 188 zcmZo@U~6b#TX4YQpUc#21_lP^|4;yAGcZW?ZE)QWWn>%1JF4e560MW7ceBh>}N~` RIcMWRbNh`KG=O*^BLLQCIEMfL delta 110 zcmZo@U~6b#TX4W)!^yLD3=9m+|DgcLW?+y?U*)-4P_u diff --git a/data/mysql/default/user_verifications.ibd b/data/mysql/default/user_verifications.ibd index 55c62e61e3db45ec3073bea1afe8d18cfdac3e87..d760b9835dafd5571028aed33359651d77078dc0 100644 GIT binary patch delta 441 zcmZo@U~gz(UvR);?Z3727#J9s|3d+g&A=cv!N7Gtm<1tt7?>E98(6`d4-8B|$UNEN zfL6V9W?oumZfPz93j;R;Lvd+AQ7Vup$G{-KUi@R|T3BX8Y#2mzVn{yZHu& z_*=UB=am?G1(a_*c*)MYfFW5teg936x23Hmb$}+Ypaq8?dT=nzhX%)VNN|9x1z9}R zflw+jDn0vVtHX5M(v+2%z_X+3``6a4NOoG)`_11(`V)-J;!d8P_v@5T!nK)jF<0Fq8c`~Uy| diff --git a/data/mysql/default/users.frm b/data/mysql/default/users.frm index 2cd267166a4f7fbcc737ba3800d811a289420bde..6bd2f5302da5182b7140c4625ffc8ee9c1526d78 100644 GIT binary patch delta 39 qcmZp2ZF1d^sK{E7k)M}3IZg4rAO{1(|IC#Cd5O8H{~@AoN;Uv79uJ-X delta 39 qcmZp2ZF1d^sK}a{o0yq1IZg4r-~$GR|CuTO^AdAY|3gIGlxzS%8W2(d diff --git a/data/mysql/default/users.ibd b/data/mysql/default/users.ibd index 75e46131d516a59ad2e8d2c93c1e53de85301d4a..1b25a602794ffdf120dafc87cbeeaffa58aa38d4 100644 GIT binary patch delta 632 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 UZ}?*uqvy{qIV9Rqzh7?u0Eu?EkpKVy diff --git a/data/mysql/ibdata1 b/data/mysql/ibdata1 index 998da9d83b2cdd093cb3b3d13c6c4b2c0681baf8..acebe08bbb50808dd2035394e765a8c71538f8ce 100644 GIT binary patch delta 9494 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 Bz4-tD delta 4839 zcmeHIYitzP6~1@YkM(Q4*Iw|fV3 z-(Y`X;f+5qI(=Sx^^(^=AYO7DS33qQHO>Rvs-2!p`YEk&*4beKLp zvm!wEre_TmlmodAv22tvzLod(@7gx7)A;F8WkZ?0?03C;7-7PuBGqLB!JiN*GeKZ< zQnl?!n&m6C5&i^MdTaI10=6vs*=wgqNn;eH4P_F_WRxi=Q&HMcrlCwnnW5Uwy_7-H z6_J=`AL_kUU4_g7TOE7a@XJgyV0SZ|qxx%Q!Cie8C-$DMo zNpP2G=L*BpA=SM8@nOQRi07<3psS{%Jh_tGwIsN+|83*NcbT^C0Gf`lnJvSzOa6CB zRy>Aa`Ov)hqKN2$x9rEClj^p2b@Hh0_ zY<_#rZE&V23&74lVn>)6sl=o?r_rsT7pITHC^=?!l|*Fu1G~2m>>A!hJj(T<;l2C% z>03HguaiA{u&;mnw&9)ocMa^=w{8Exp4~&1T6S?hNp$c~*Y)ZRmVuTMeMOWb+hkHu zr^jamhKKt1MYtj`M%?Y(*>ydr&TtaBJe#;4*3#FnAAVQ3^sPxs@?!;r=52iQ9G^4v z`#y7sw`BS`{qy&PW)&_IOLSs&>u^OZ%$|XBk?LVS#&r2>p=L%=d4vio`k^agK@65d zF#q&93+8fGdMmu&iD12M!fuHuPM%(TtKLeTPfBn7mAQLvhRyX-{d)D~nXRu=uN=EW z!U0s43obd@%N>FI3@gPvqvlR@k_#|uR1SEVzxfZwoqSsS>)*Yc~KM7 z!MXRYe|%oF#5ljQIOX~i7esl?_W6As6Lu9gSn+ zqVUCR&&}bxE{QjiVkfWZCohx2r|*k(G266dTcmHhDmKsBl+I{Wx37v|%yxQ?>Yi)j zg$nPdP0!Fo=&SUty;DTDX=VETrCnMPH=m5}9rpaFZo;VqZT8>RjZZNGAh-|~AS^`4 zLr@Vk1UJGWgnWboghGVH2p)tYgkppegoh9wM)(H8BM3_n9z`fccnqNo!HcjIp&Y@7 zP=Qd1uneIJVL8G#5vmdV2sH@gv=*Tbp&p?DA%GweRw6VatU_o)Xhvv3SdGw%@GXQj z2#+HK!_X$xn)mj!(CzjrY(JY45m5~H%Jx4ucz*9HdD()zUR_M3 z&l4s>O$SYpqEfvP+TBWan$ZhICjwRVH!im_t)}CLM~{SvQycHDb|}_7q6ZW&$B{Cp zPsvW7>@8lx4dl*!4OL%^4t>eA+MyRe?7l`ab#XE@eG_C9k_nNFI?@#KjqG1PrfWP@ zXRP6#(+&17>PsGtOl%o~y1!g)Yb3!yoFI+n2Lz{6Q>|gbSoFyh-fYyFp+~qr$X!{+ z-l@=N@h)YO}#x^ zIk-16`eg^Wzy36=nw^H~58mviAe!QX2zEUf1aH&JWT!UL>?*f{&;@rj8vZGDtiir! zXk2GnunT1;%C#uhh2?r#cIWLAc9LEjFa1_eg0%IQ8YG?La|-IUGmET@>pM;7SW;yM z?N%PjTSQsvq%1wP>C0PEQ Tg85E3-wEeC;eYCcHQs*%>FVIK diff --git a/data/mysql/mysql/innodb_index_stats.ibd b/data/mysql/mysql/innodb_index_stats.ibd index 334064932059f804e9e91973565fa59b1742bd5b..edb52448d58e389d33abd5d202d610b961e67cfa 100644 GIT binary patch delta 368 zcmZo@U~6b#TW~lNEt4A0xWv)n9Ahohb&>HuuelU<>?_en0mG;P*b!g zCm+^_iLzI~Oxb++a4fT^um}&(F)mC^NX9TtHa+gj3zcE+fEuGedE0Sam?%pL)EM>6 z;wRRyz>Gn04b$WsXHsD@>>MZ-1f9)*8O2crwLp9Fr?WmVQO-+H3sg4epX)T_m=)ZU S1Pa292hHs_UeEyIg^U0oe{d22 delta 326 zcmZo@U~6b#TW~;P!TcGY85kIt|3d+g&A=d)VzgP}z*0t0L5F1w42onweODm wmdQ^KRPhQ6aRX(t7~?@QlNTNk-`sq#)Q%%%e~T4J_r`renameColumn('email', 'phone'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + $table->renameColumn('phone', 'email'); + } +}