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

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);
}
}