policy.stub 2.9 KB
<?php
/**
+-----------------------------------------------------------------------------------------------------------------------
 * 策略、授权层::title 授权类
+-----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Policies
 * @package   App\Policies
 * @author    :author <:email>
 * @date      :version
 * @copyright 2020-2022 :author (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
namespace App\Policies;

use App\Models\:class_name;
use App\Models\User\User;
use Illuminate\Auth\Access\HandlesAuthorization;

/**
 * Class :class_namePolicy.
 *
 * @category  App\Policies
 * @package   App\Policies
 * @author    :author <:email>
 * @date      :version
 * @copyright 2020-2022 :author (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
class :class_namePolicy
{
    use HandlesAuthorization;

    /**
     * Create a new policy instance.
     *
     * @return void
     */
    public function __construct()
    {
        // if ($user->isSuperAdmin()) {
        //     return true;
        // }
    }

    /**
     * Determine if the user has super authority
     * 在 Policy 中会在所有方法执行前调用,经常用到的地方就是处理管理员授权逻辑。
     *
     * @param User $user
     * @param :class_name $ability
     * @return void
     */
    public function before($user, $ability)
    {
        // if ($user->isSuperAdmin()) {
        //     return true;
        // }
    }

    /**
     * Determine if the given :class_name can be updated by the user.
     *
     * @param User $user
     * @param :class_name $model
     * @return bool
     */
    public function view(User $user, :class_name $model)
    {
        return true;
    }

    /**
     * Determine the user can create the :class_name.
     *
     * @param User $user
     * @return bool
     */
    public function create(User $user)
    {
        return true;
    }

    /**
     * Determine if the given :class_name can be updated by the user.
     *
     * @param User $user
     * @param :class_name $model
     * @return bool
     */
    public function update(User $user, :class_name $model)
    {
        return $model->user_id == $user->id;
    }

    /**
     * Determine if the given :class_name can be delete by the user.
     *
     * @param User $user
     * @param :class_name $model
     * @return bool
     */
    public function delete(User $user, :class_name $model)
    {
        return $model->user_id == $user->id;
    }

    /**
     * Determine if the given :class_name be own by the user.
     *
     * @param User $user
     * @param :class_name $model
     * @return bool
     */
    public function own(User $user, :class_name $model)
    {
        return $model->user_id == $user->id;
    }
}