Files
nexusphp/app/Providers/AuthServiceProvider.php

79 lines
2.2 KiB
PHP
Raw Permalink Normal View History

2021-04-02 19:48:41 +08:00
<?php
namespace App\Providers;
2022-06-27 01:39:01 +08:00
use App\Auth\NexusWebGuard;
use App\Auth\NexusWebUserProvider;
2022-11-08 19:06:37 +08:00
use App\Models\AudioCodec;
use App\Models\Category;
use App\Models\Codec;
use App\Models\Icon;
use App\Models\Media;
use App\Models\Plugin;
use App\Models\Processing;
use App\Models\SearchBox;
use App\Models\SecondIcon;
use App\Models\Source;
use App\Models\Standard;
use App\Models\Team;
use App\Models\TorrentCustomField;
2022-06-03 03:42:53 +08:00
use App\Models\User;
2022-11-08 19:06:37 +08:00
use App\Policies\CodecPolicy;
2021-04-02 19:48:41 +08:00
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
2022-06-03 03:42:53 +08:00
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
2021-04-02 19:48:41 +08:00
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
2022-11-08 19:06:37 +08:00
SearchBox::class => CodecPolicy::class,
Category::class => CodecPolicy::class,
Icon::class => CodecPolicy::class,
SecondIcon::class => CodecPolicy::class,
TorrentCustomField::class => CodecPolicy::class,
2022-11-08 19:06:37 +08:00
Codec::class => CodecPolicy::class,
AudioCodec::class => CodecPolicy::class,
Source::class => CodecPolicy::class,
Media::class => CodecPolicy::class,
Standard::class => CodecPolicy::class,
Team::class => CodecPolicy::class,
Processing::class => CodecPolicy::class,
Plugin::class => CodecPolicy::class,
2021-04-02 19:48:41 +08:00
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
2025-04-05 15:38:40 +07:00
//some plugin use this guard
2022-06-03 03:42:53 +08:00
Auth::viaRequest('nexus-cookie', function (Request $request) {
2025-04-05 15:38:40 +07:00
return get_user_from_cookie($request->cookie(), false);
2022-06-03 03:42:53 +08:00
});
2022-06-27 01:39:01 +08:00
Auth::extend('nexus-web', function ($app, $name, array $config) {
// 返回 Illuminate\Contracts\Auth\Guard 的实例 ...
return new NexusWebGuard($app['request'], new NexusWebUserProvider());
2022-06-27 01:39:01 +08:00
});
2023-07-27 02:44:04 +08:00
Auth::viaRequest('passkey', function (Request $request) {
2023-07-27 12:36:01 +08:00
$passkey = $request->passkey;
2023-07-27 13:11:07 +08:00
if (strlen($passkey) != 32) {
2023-07-27 12:36:01 +08:00
return null;
}
return User::query()->where('passkey', $passkey)->first();
2023-07-27 02:44:04 +08:00
});
2022-06-03 03:42:53 +08:00
}
2021-04-02 19:48:41 +08:00
}