atomjoy/webi

Laravel web rest api 认证库。

v9.0.3 2023-03-05 13:32 UTC

README

Laravel web rest api 认证库。

安装(Laravel 10, Php 8.1)

首先设置 .env 变量(mysql, smtp),然后

composer require atomjoy/webi

用户模型

// app/Models/User.php
<?php

namespace App\Models;

use Webi\Models\WebiUser;

class User extends WebiUser
{
  function __construct(array $attributes = [])
  {
    parent::__construct($attributes);

    $this->mergeFillable([
      // 'mobile', 'website'
    ]);

    $this->mergeCasts([
      // 'status' => StatusEnum::class,
      // 'email_verified_at' => 'datetime:Y-m-d H:i:s',
    ]);

    // $this->hidden[] = 'secret_hash';
  }

  protected $dispatchesEvents = [
    // 'saved' => UserSaved::class,
    // 'deleted' => UserDeleted::class,
  ];
}

创建登录页面

// routes/web.php
Route::get('/login', function() {
    return 'My login page'; // return view('vue');
})->name('login');

创建激活页面

// routes/web.php
use Webi\Http\Controllers\WebiActivate;

// Create your own activation page for Vue, Laravel
Route::get('/activate/{id}/{code}', [YourActivationController::class, 'index'])->middleware(['webi-locale']);

// Or for tests use json controller from Webi\Http\Controllers\WebiActivate.php
Route::get('/activate/{id}/{code}', [WebiActivate::class, 'index'])->middleware(['webi-locale']);

将翻译复制到 app lang 中(仅用于测试)

php artisan lang:publish
php artisan vendor:publish --tag=webi-lang-en --force
php artisan vendor:publish --tag=webi-lang-pl --force

创建数据库表

# Create tables
php artisan migrate

# Refresh tables
php artisan migrate:fresh

# Seed data (optional)
php artisan db:seed --class=WebiSeeder

运行应用程序

php artisan serve

测试

测试说明文件位置

tests/README.md

设置(可选)

自定义

# Edit email blade themes
php artisan vendor:publish --tag=webi-email

# Edit lang translations
php artisan vendor:publish --tag=webi-lang

# Edit config
php artisan vendor:publish --tag=webi-config

# Override config
php artisan vendor:publish --tag=webi-config --force

# Add the image logo to your mail
php artisan vendor:publish --tag=webi-public

# Provider
php artisan vendor:publish --provider="Webi\WebiServiceProvider.php"

表种子

php artisan db:seed --class=WebiSeeder

更新类

composer update

composer dump-autoload -o

composer update --no-dev

Web API 请求

以 json 格式发送请求。响应为 json:{'message', "user"}。更多请参阅:src/Http/Requestssrc/Http/Controllers 目录或 routes 文件 routes/web.php

/web/api/login

方法:POST

Params: 'email', 'password', 'remember_me'
Data: {'message', "user"}

/web/api/register

方法:POST

Params: 'name', 'email', 'password', 'password_confirmation'
Data: {'message', 'created'}

/web/api/reset

方法:POST

Params: 'email'
Data: {'message'}

/web/api/activate/{id}/{code}

方法:GET

Params: 'id', 'code'
Data: {'message'}

/web/api/logout

方法:GET

Params: without params
Data: {'message'}

/web/api/locale/{locale}

方法:GET

Params: 'locale'
Data: {'message', 'locale'}

/web/api/csrf

方法:GET

Params: without params
Data: {'message', 'counter', 'locale'}

/web/api/logged

方法:GET

Params: without params
Data: {'message', 'locale', "user"}

/web/api/change-password

方法:POST 认证:true

Params: 'password_current', 'password', 'password_confirmation'
Data: {'message'}

/web/api/test/user, /web/api/test/worker, /web/api/test/admin

方法:GET 认证:true

Params: without params
Data: {'message', "user", 'ip'}