1
0
mirror of https://github.com/robonen/education-project.git synced 2026-03-20 02:44:31 +00:00

Регистрация и вход для всех ролей

This commit is contained in:
2020-12-02 23:58:36 +07:00
commit 54732a9f6a
111 changed files with 11765 additions and 0 deletions

41
app/Console/Kernel.php Normal file
View File

@@ -0,0 +1,41 @@
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
//
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')->hourly();
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}

View File

@@ -0,0 +1,37 @@
<?php
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'password',
'password_confirmation',
];
/**
* Register the exception handling callbacks for the application.
*
* @return void
*/
public function register()
{
//
}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}

View File

@@ -0,0 +1,45 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\HeadTeacherRequest;
use App\Models\HeadTeacher;
use Illuminate\Http\JsonResponse;
class HeadTeacherController extends Controller
{
/**
* Получение списка всех завучей
*
* @return JsonResponse
*/
public function index()
{
return response()->json(HeadTeacher::all(), 200);
}
/**
* Получение одного завуча
*
* @param HeadTeacher $headteacher
* @return JsonResponse
*/
public function show(HeadTeacher $headteacher)
{
return response()->json($headteacher, 200);
}
/**
* Обновление завуча
*
* @param HeadTeacherRequest $request
* @param HeadTeacher $headteacher
* @return JsonResponse
*/
public function update(HeadTeacherRequest $request, HeadTeacher $headteacher)
{
$headteacher->update($request->all());
return response()->json($headteacher, 200);
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\Auth\LoginRequest;
use Illuminate\Http\Request;
class LoginController extends Controller
{
public function __invoke(LoginRequest $request)
{
$credentials = $request->only('login', 'password');
if (auth()->attempt($credentials))
return response()->json('You cannot sign with those credentials!', 401);
$token = auth()->user()->makeToken($request->get('remember_me'));
return response()->json([
'token_type' => 'Bearer',
'token' => $token->accessToken,
], 200);
}
}

View File

@@ -0,0 +1,15 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class LogoutController extends Controller
{
public function __invoke(Request $request)
{
$request->user()->token()->revoke();
return response()->json('ok', 200);
}
}

View File

@@ -0,0 +1,44 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\ParentRequest;
use App\Models\Parentt;
use Illuminate\Http\JsonResponse;
class ParenttController extends Controller
{
/**
* Получение списка всех учителей
*
* @return JsonResponse
*/
public function index()
{
return response()->json(Parentt::all(), 200);
}
/**
* Получение одного учителя
*
* @param Parentt $parent
* @return JsonResponse
*/
public function show(Parentt $parent)
{
return response()->json($parent, 200);
}
/**
* Обновление учителя
*
* @param ParentRequest $request
* @param Parentt $parent
* @return JsonResponse
*/
public function update(ParentRequest $request, Parentt $parent)
{
$parent->update($request->all());
return response()->json($parent, 200);
}
}

View File

@@ -0,0 +1,56 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\Auth\RegisterRequest;
use App\Models\HeadTeacher;
use App\Models\Parentt;
use App\Models\Role;
use App\Models\Student;
use App\Models\Teacher;
use App\Models\User;
class RegisterController extends Controller
{
public function __invoke(RegisterRequest $request)
{
$role = Role::where('name', $request->get('role'));
if ($role->isEmpty())
return response()->json('Role not found', 404);
$user = User::create(array_merge(
$request->only('login', 'class_id'),
[
'password' => bcrypt($request->get('password')),
'role_id' => $role->first()->id,
]
));
$user_id = [
'user_id' => $user->id,
];
switch($request->get('role'))
{
case 'headteacher':
HeadTeacher::create($user_id);
break;
case 'teacher':
Teacher::create($user_id);
break;
case 'student':
Student::create($user_id);
break;
case 'parent':
Parentt::create($user_id);
break;
}
return response()->json('ok', 200);
}
}

View File

@@ -0,0 +1,75 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\SchoolClassRequest;
use App\Models\SchoolClass;
use App\Models\Teacher;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class SchoolClassController extends Controller
{
/**
* Получение списка всех классов
*
* @return JsonResponse
*/
public function index()
{
return response()->json(SchoolClass::all(), 200);
}
/**
* Получение класса
*
* @param SchoolClass $class
* @return JsonResponse
*/
public function show(SchoolClass $class)
{
return response()->json($class, 200);
}
/**
* @param SchoolClassRequest $request
* @return JsonResponse
*/
public function store(SchoolClassRequest $request)
{
$teacher = Teacher::find($request->get('teacher_id'));
if ($teacher) {
$schoolClass = $teacher->schoolClass()->create($request->all());
} else {
$schoolClass = SchoolClass::create($request->all());
}
return response()->json(SchoolClass::find($schoolClass->id), 201);
}
/**
* Обновление класса
*
* @param SchoolClassRequest $request
* @param SchoolClass $class
* @return JsonResponse
*/
public function update(SchoolClassRequest $request, SchoolClass $class)
{
$class->update($request->all());
return response()->json($class, 200);
}
/**
* Удаление класса
*
* @param SchoolClass $class
* @return JsonResponse
* @throws \Exception
*/
public function delete(SchoolClass $class)
{
$class->delete();
return response()->json('ok', 200);
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\StudentRequest;
use App\Models\Student;
use Illuminate\Http\JsonResponse;
class StudentController extends Controller
{
/**
* Получение списка всех учителей
*
* @param StudentRequest $request
* @return JsonResponse
*/
public function index(StudentRequest $request)
{
return response()->json(Student::all(), 200);
}
/**
* Получение одного учителя
*
* @param Student $student
* @param StudentRequest $request
* @return JsonResponse
*/
public function show(Student $student, StudentRequest $request)
{
return response()->json($student, 200);
}
/**
* Обновление учителя
*
* @param StudentRequest $request
* @param Student $student
* @return JsonResponse
*/
public function update(StudentRequest $request, Student $student)
{
$student->update($request->all());
return response()->json($student, 200);
}
}

View File

@@ -0,0 +1,61 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Task;
class TaskController extends Controller
{
public function createTask(Request $request)
{
$request->validate([
'name' => 'required|min:5|max:100',
'subject_id' => 'required'
]);
$add_new = new Task;
$add_new->name = $request->input('name');
$add_new->description = $request->input('description');
$add_new->subject_id = $request->input('subject_id');
$add_new->path_to_task = $request->input('path_to_task');
$add_new->save();
return Task::findOrFail($add_new->id);
}
public function index()
{
return Task::all(); // Здесь наверное лучше выводить только задания по конкретному предмету
// Добавить сортировку
}
public function showTask($taskId)
{
return Task::where('id', '=', $taskId)->get();
}
public function editTask(Task $task, Request $request)
{
$request->validate([
'name' => 'required|min:5:max:100',
'subject_id' => 'required'
]);
$task->name = $request->input('name');
$task->description = $request->input('description');
$task->path_to_task = $request->input('path_to_task');
$task->save();
return Task::where('id', '=', $task->id)->get();
}
public function deleteTask(Task $task)
{
$task->delete();
return 'Task №' . $task->id . ' has been deleted';
}
}

View File

@@ -0,0 +1,48 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\TeacherRequest;
use App\Models\SchoolClass;
use App\Models\Teacher;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class TeacherController extends Controller
{
/**
* Получение списка всех учителей
*
* @param TeacherRequest $request
* @return JsonResponse
*/
public function index()
{
return response()->json(Teacher::all(), 200);
}
/**
* Получение одного учителя
*
* @param Teacher $teacher
* @param TeacherRequest $request
* @return JsonResponse
*/
public function show(Teacher $teacher)
{
return response()->json($teacher, 200);
}
/**
* Обновление учителя
*
* @param TeacherRequest $request
* @param Teacher $teacher
* @return JsonResponse
*/
public function update(TeacherRequest $request, Teacher $teacher)
{
$teacher->update($request->all());
return response()->json($teacher, 200);
}
}

67
app/Http/Kernel.php Normal file
View File

@@ -0,0 +1,67 @@
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Fruitcake\Cors\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'role' => \App\Http\Middleware\Role::class,
];
}

View File

@@ -0,0 +1,21 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string|null
*/
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
}
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/
protected $except = [
//
];
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware;
class PreventRequestsDuringMaintenance extends Middleware
{
/**
* The URIs that should be reachable while maintenance mode is enabled.
*
* @var array
*/
protected $except = [
//
];
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null ...$guards
* @return mixed
*/
public function handle(Request $request, Closure $next, ...$guards)
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
}
return $next($request);
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class Role
{
private $delimetr = '|';
/**
* Handle an incoming request.
*
* @param Request $request
* @param Closure $next
* @param $roles
* @return mixed
*/
public function handle(Request $request, Closure $next, $roles)
{
$roles = explode($this->delimetr, $roles);
if (!auth()->user()->hasRole($roles)) {
return response()->json('',404);
}
return $next($request);
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class TrimStrings extends Middleware
{
/**
* The names of the attributes that should not be trimmed.
*
* @var array
*/
protected $except = [
'password',
'password_confirmation',
];
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustHosts as Middleware;
class TrustHosts extends Middleware
{
/**
* Get the host patterns that should be trusted.
*
* @return array
*/
public function hosts()
{
return [
$this->allSubdomainsOfApplicationUrl(),
];
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Middleware;
use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array|string|null
*/
protected $proxies;
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
protected $headers = Request::HEADER_X_FORWARDED_ALL;
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
}

View File

@@ -0,0 +1,27 @@
<?php
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
abstract class ApiFormRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
protected function failedValidation(Validator $validator)
{
throw new HttpResponseException(response()->json($validator->errors(), 400));
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Http\Requests\Auth;
use App\Http\Requests\UserRequest;
use Illuminate\Foundation\Http\FormRequest;
class LoginRequest extends UserRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function specific()
{
return [];
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Auth;
use App\Http\Requests\UserRequest;
use Illuminate\Foundation\Http\FormRequest;
class RegisterRequest extends UserRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function specific()
{
return [
'role' => 'required|string',
'class_id' => 'required|integer|gt:0',
];
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
abstract class UserRequest extends ApiFormRequest
{
public function specific()
{
return [];
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return array_merge([
'login' => 'required|string',
'password' => 'required|string|min:6',
], $this->specific());
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Http\Requests;
class HeadTeacherRequest extends ApiFormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'date_of_birth' => 'date_format:Y/m/d|before:today|after:1900-01-01',
'phone_number' => 'regex:/^\+?7\d{10}$/',
];
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ParentRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'date_of_birth' => 'date_format:Y/m/d|before:today|after:1900-01-01',
'phone_number' => 'regex:/^\+?7\d{10}$/',
];
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class SchoolClassRequest extends ApiFormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'number' => 'required|integer|between:1,11',
'letter' => 'required|max:1',
'count_students' => 'required|integer',
'profile' => 'required',
];
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StudentRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'date_of_birth' => 'date_format:Y/m/d|before:today|after:1900-01-01',
'phone_number' => 'regex:/^\+?7\d{10}$/',
'class_id' => 'integer|gt:0',
];
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class TeacherRequest extends ApiFormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'date_of_birth' => 'date_format:Y/m/d|before:today|after:1900-01-01',
'phone_number' => 'regex:/^\+?7\d{10}$/',
];
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Validator;
class HeadTeacher extends Model
{
use HasFactory;
protected $fillable = [
'user_id',
];
public function user()
{
return $this->belongsTo(User::class);
}
}

17
app/Models/Parentt.php Normal file
View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Validator;
class Parentt extends Model
{
use HasFactory;
protected $fillable = [
'user_id',
];
}

16
app/Models/Role.php Normal file
View File

@@ -0,0 +1,16 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Role extends Model
{
use HasFactory;
public function users()
{
return $this->hasMany(User::class);
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class SchoolClass extends Model
{
use HasFactory;
protected $fillable = [
'number',
'letter',
'count_students',
'profile',
];
public function teacher()
{
return $this->belongsTo(Teacher::class, 'classroom_teacher');
}
}

16
app/Models/Student.php Normal file
View File

@@ -0,0 +1,16 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Validator;
class Student extends Model
{
use HasFactory;
protected $fillable = [
'user_id',
];
}

13
app/Models/Task.php Normal file
View File

@@ -0,0 +1,13 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
use HasFactory;
protected $table = 'tasks';
}

21
app/Models/Teacher.php Normal file
View File

@@ -0,0 +1,21 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Validator;
class Teacher extends Model
{
use HasFactory;
protected $fillable = [
'user_id',
];
public function schoolClass()
{
return $this->hasOne(SchoolClass::class, 'classroom_teacher');
}
}

68
app/Models/User.php Normal file
View File

@@ -0,0 +1,68 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Carbon\Carbon;
class User extends Authenticatable
{
use HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'login',
'email',
'password',
'role_id',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* @param array $roles
* @return bool
*/
public function hasRole(array $roles)
{
foreach ($roles as $role)
{
if ($this->role->contains('name', $role))
return true;
}
return false;
}
public function role()
{
return $this->belongsTo(Role::class);
}
public function headteacher()
{
return $this->hasOne(HeadTeacher::class);
}
public function makeToken(bool $remember)
{
$token = $this->createToken(config('app.name'));
$token->token->expires_at = $remember ? Carbon::now()->addMonth() : Carbon::now()->addDay();
$token->token->save();
return $token;
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
use Laravel\Passport\Passport;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
// 'App\Models\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Passport::routes();
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;
class BroadcastServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Broadcast::routes();
require base_path('routes/channels.php');
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Providers;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
];
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
//
}
}

View File

@@ -0,0 +1,62 @@
<?php
namespace App\Providers;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
{
/**
* The path to the "home" route for your application.
*
* This is used by Laravel authentication to redirect users after login.
*
* @var string
*/
public const HOME = '/home';
/**
* The controller namespace for the application.
*
* When present, controller route declarations will automatically be prefixed with this namespace.
*
* @var string|null
*/
protected $namespace = 'App\\Http\\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
});
}
/**
* Configure the rate limiters for the application.
*
* @return void
*/
protected function configureRateLimiting()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
});
}
}