starta / yoga
PHP的Yoga SDK
dev-master
2020-02-12 14:29 UTC
Requires
- doctrine/dbal: ^2.10
This package is auto-updated.
Last update: 2024-09-13 01:31:30 UTC
README
Yoga的Laravel SDK
此项目仍处于alpha阶段。请不要在生产环境中使用。
安装
在终端打开您的项目并运行
composer require starta/yoga
然后运行此命令以发布资源和配置文件
php artisan vendor:publish --provider="Yoga\YogaServiceProvider"
默认配置看起来像这样
<?php return [ 'auth' => [ 'enabled' => true, 'guard' => 'api', 'users_table' => 'users', 'api_tokens' => true, 'controller' => '' ], 'routes' => [ 'global' => [ 'prefix' => 'yoga', 'middleware' => ['api'], ], 'auth' => [ 'middleware' => ['api', 'auth:api'] ], 'guest' => [] ], 'resources' => [ 'me' => Yoga\Resources\Me::class ] ]; // End of file
如果您想使用Yoga默认的API验证,应该运行
php artisan migrate
启用认证
为了使您的Yoga客户端进行认证,您必须告诉您的Yoga服务器如何进行。首先,在您的controllers文件夹中创建一个名为AuthController的控制台。然后,您必须向它添加IdentityAndPassword特性,并设置您应用程序的可认证模型。以下示例中,我们将使用Laravel默认认证
App\Http\Controllers\AuthController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class AuthController { use \Yoga\Auth\IdentityAndPassword; public $authenticable; function __construct() { $this->authenticable = \App\User::class; } } // End of file
然后在您的配置文件中,将auth.controller设置为实际的认证控制器。
config/yoga.php
***** 'auth' => [ 'enabled' => true, 'guard' => 'api', 'users_table' => 'users', 'api_tokens' => true, 'controller' => 'App\Http\Controllers\AuthController', 'enable_create_user' => true, 'create_user_rules' => [ 'name' => 'required|min:2', 'email' => 'required|email', 'password' => 'required|min:6|max:16' ], 'enable_update_user' => true, 'update_user_rules' => [ 'name' => 'required|min:2', 'email' => 'required|email|unique:users,email', 'password' => 'nullable|min:6|max:16' ] ], *******
这就完成了,您的认证方法应该运行良好。
数据库模块
为了使您的Yoga客户端能够访问您的模型,您应该在配置文件中将它们注册为资源。以下示例中,我们创建了两个模型,App\Post和App\Comment,它们是相关的。在您的配置文件中,注册它们如下
config/yoga.php
***** 'resources' => [ 'me' => Yoga\Resources\Me::class, 'posts' => App\Post::class, 'comments' => App\Comment::class ] *******
创建用户
要创建新用户,您需要在配置文件中注册配置,并在IdentityAndPassword文件中添加功能。
src/Auth/IdentityAndPassword.php
***** function createUser(Request $request) { if (!config('yoga.auth.enable_create_user')) { return Yoga::reject(__('Create users not enable')); } // Validar requisição $validatedData = $request->validate( config('yoga.auth.create_user_rules', []) ); $validatedData['password'] = Hash::make($validatedData['password']); // Criar novo usuario $user = $this->authenticable::create($validatedData); // Logar o novo usuario $user->createToken(); return Yoga::resolve([ 'access_token' => $user->getAccessToken(), 'token_type' => 'Bearer', 'expires_at' => date('Y-m-d H:i:s', strtotime('+1 day')) ]); } *******
更新用户
要创建新用户,您需要在配置文件中注册配置,并在IdentityAndPassword文件中添加功能。
src/Auth/IdentityAndPassword.php
***** function updateProfile(Request $request) { // Verica se possui permissão para editar if (!config('yoga.auth.enable_update_user')) { return Yoga::reject(__('Update users not enable')); } $user = Auth::guard(config('yoga.auth.guard'))->user(); // Valida os dados $validatedData = $request->validate( collect(config('yoga.auth.update_user_rules', []))->map(function($rule) use ($user) { return join(collect(explode('|', $rule))->map(function($rule) use ($user) { if (strpos($rule, 'unique:') !== false) { return $rule.','.$user->id; } else return $rule; })->toArray(), '|'); })->toArray() ); if ($validatedData['password']) { $validatedData['password'] = Hash::make($validatedData['password']); } // Edita os dados $user->update($validatedData); return Yoga::resolve($user); } *******
这就完成了。您的Yoga客户端现在可以使用Yoga客户端访问您的模型。
CORS问题
如果您的Yoga服务器在不同的域上运行,而您的Yoga客户端在另一个域上,您可能有一些CORS问题。为了解决这个问题,我们建议使用spatie/cors库