123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- <?php
- namespace App\Http\Controllers;
- use App\Competence;
- use App\Invite;
- use App\User;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Hash;
- use PhpParser\Node\Expr\Cast\Object_;
- use Validator;
- use Illuminate\Support\Str;
- use Illuminate\Support\Facades\Storage;
- use PDF;
- class UserController extends Controller
- {
- private $inviteCode = NULL;
- public function test()
- {
- return view('certificate');
- }
- public function down()
- {
- //return view('certificate');
- $pdf = PDF::loadView('diploma');
- return $pdf->download('test.pdf');
- }
- /**
- * Метод для авторизации по логину и паролю
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse
- */
- public function auth(Request $request)
- {
- /*
- * Валидация полей
- */
- $validator = Validator::make(
- $request->all(),
- [
- "username" => ['required'],
- "password" => ['required', 'min:5']
- ]
- );
- /*
- * Проверяем результаты валидации
- */
- if ($validator->fails())
- return response()->json(["status" => false, "errors" => $validator->messages()])->setStatusCode(400, "Error fields");
- /*
- * Ищем пользователя по логину
- */
- $userCheck = User::where('username', $request->username)->first();
- /*
- * Если пользователь найден сравниваем пароли
- */
- if ($userCheck) {
- if (Hash::check($request->password, $userCheck->password)) {
- $token = Str::random(300);
- $userCheck->token = $token;
- $userCheck->save();
- return response()->json(["status" => true, "token" => $token]);
- } else {
- return response()->json(["status" => false, "message" => "Wrong password"], 401);
- }
- } else {
- return response()->json(["status" => false, "message" => "User not found"], 401);
- }
- }
- /**
- * Проверка наличия авторизации по токену
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse
- */
- public function check(Request $request)
- {
- /*
- * Получаем токен
- */
- $token = $request->bearerToken();
- /*
- * Ищем пользователя
- */
- $userCheck = User::where('token', $token)->first();
- /*
- * Проверяем наличие пользователя
- */
- if ($userCheck) {
- return response()->json([
- "id" => $userCheck->id,
- "name" => $userCheck->name
- ]);
- } else {
- return response()->json([
- "status" => false,
- "message" => "User not found"
- ])->setStatusCode(401);
- }
- }
- /**
- * Регистрация пользователя по инвайтам
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse
- */
- public function register(Request $request)
- {
- /*
- * Переносим инвайт в $this->inviteCode из заголовка "Invite-code"
- */
- $this->inviteCode = $request->header('Invite-code');
- /*
- * Проверяем наличие валидного инвайта в базе данных
- */
- if ($this->invite() === false)
- return response()->json(["status" => false, "message" => "Invalid invite"])->setStatusCode(400, "Invalid invite");
- /*
- * Валидация полей
- */
- $validator = Validator::make(
- $request->all(),
- [
- "name" => ['required'],
- "username" => ['required', 'unique:users'],
- "password" => ['required', 'confirmed', 'min:5'],
- "password_confirmation" => ['required', 'min:5'],
- "сompetence" => ['required', 'numeric'],
- "position" => ['required', 'numeric']
- ]
- );
- /*
- * Проверяем результаты валидации
- */
- if ($validator->fails())
- return response()->json(["status" => false, "errors" => $validator->messages()])->setStatusCode(400, "Error fields");
- /*
- * Добавлем пользователя в базу данных
- */
- $user = new User();
- $user->fill([
- "name" => $request->name,
- "username" => $request->username,
- "password" => Hash::make($request->password),
- "сompetence" => $request->сompetence,
- "position" => $request->position
- ]);
- $user->save();
- /*
- * Успешный ответ
- */
- return response()->json(["status" => true]);
- }
- /**
- * Получение данных о пользователе по токену
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse
- */
- public function getUser(Request $request)
- {
- /*
- * Получаем токен
- */
- $token = $request->bearerToken();
- /*
- * Ищем пользователя
- */
- $user = User::where('token', $token)->first();
- /*
- * Проверяем наличие пользователя и выводим
- */
- if ($user) {
- return response()->json([
- "id" => $user->id,
- "name" => $user->name,
- "username" => $user->username,
- "сompetence_number" => $user->сompetence,
- "сompetence_title" => Competence::where('number', $user->сompetence)->first()->title,
- "position" => $user->position
- ], 200);
- }
- /*
- * Ответ при безуспешном поиске пользователя
- */
- return response()->json([
- "status" => false,
- "message" => "User not found"
- ], 404);
- }
- public static function getUserByToken($token) {
- /*
- * Ищем пользователя
- */
- $user = User::where('token', $token)->first();
- /*
- * Проверяем наличие пользователя и выводим
- */
- $user = [
- "id" => $user->id,
- "name" => $user->name,
- "username" => $user->username,
- "сompetence_number" => $user->сompetence,
- "сompetence_title" => Competence::where('number', $user->сompetence)->first()->title,
- "position" => $user->position
- ];
- return (object)$user;
- }
- /**
- * Проварка инвайт-кода на валидность
- * @return bool
- */
- private function invite()
- {
- $invite = Invite::where('code', $this->inviteCode)->first();
- return $invite ? true : false;
- }
- }
|