diff --git a/app/Http/Controllers/MobileRegisterController.php b/app/Http/Controllers/MobileRegisterController.php new file mode 100644 index 0000000..795c202 --- /dev/null +++ b/app/Http/Controllers/MobileRegisterController.php @@ -0,0 +1,131 @@ +all(), [ + 'email' => 'required|email|unique:users,email', + 'password' => 'required|min:6', + 'password_confirmation' => 'required|same:password', + ]); + + if ($validator->fails()) { + return response()->json(['errors' => $validator->errors()], 422); + } + + $detailz = [ + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, + 'birthdate' => $request->birthdate, + 'gender' => $request->gender, + 'country' => $request->country, + 'city' => $request->city, + 'lang' => $request->lang, + 'weight' => $request->weight, + 'height' => $request->height, + 'chest_circumference' => $request->chest_circumference ?? 0, + 'waist_circumference' => $request->waist_circumference ?? 0, + 'hip_circumference' => $request->hip_circumference ?? 0, + 'blood_pressure_up' => $request->blood_pressure_up ?? 0, + 'blood_pressure_down' => $request->blood_pressure_down ?? 0, + 'has_hypo' => $request->has_hypo ?? false, + 'has_hyper' => $request->has_hyper ?? false, + 'about_alergy' => $request->about_alergy ?? '', + 'about_taking_pils' => $request->about_taking_pils ?? '', + 'about_sport_hobbies' => $request->about_sport_hobbies ?? '', + 'favorite_foods' => $request->favorite_foods ?? '', + 'unfavorite_foods' => $request->unfavorite_foods ?? '', + 'additional_info' => $request->additional_info?? '', + ]; + + $validator = Validator::make($detailz, [ + 'first_name' => ['required', 'string', 'max:255'], + 'last_name' => ['required', 'string', 'max:255'], + 'birthdate' => ['required', 'date'], + 'gender' => ['required', Rule::in(['male', 'female'])], + 'country' => ['required', 'string', 'max:255'], + 'city' => ['required', 'string', 'max:255'], + 'lang' => ['required', 'string', 'max:255'], + 'weight' => ['required', 'integer'], + 'height' => ['required', 'integer'], + 'chest_circumference' => ['required', 'integer'], + 'waist_circumference' => ['required', 'integer'], + 'hip_circumference' => ['required', 'integer'], + 'blood_pressure_up' => ['required', 'integer'], + 'blood_pressure_down' => ['required', 'integer'], + 'has_hypo' => ['required', Rule::in(['0', '1'])], + 'has_hyper' => ['required', Rule::in(['0', '1'])], + 'about_alergy' => ['sometimes', 'nullable', new MinWords(1)], + 'about_taking_pils' => ['sometimes', 'nullable', new MinWords(1)], + 'about_sport_hobbies' => ['sometimes', 'nullable', new MinWords(1)], + 'favorite_foods' => ['sometimes', 'nullable', new MinWords(1)], + 'unfavorite_foods' => ['sometimes', 'nullable', new MinWords(1)], + 'additional_info' => ['sometimes', 'nullable', new MinWords(1)], + ]); + + if ($validator->fails()) { + return response()->json(['errors' => $validator->errors()], 422); + } + + //Валидация пройдена успешно + + $newUser = User::create([ + 'name' => $request->first_name, + 'email' => $request->email, + 'password' => Hash::make($request->password), + ]); + + $token = $newUser->createToken('mobile'); + + $detailz['user_id'] = $newUser->id; + $detailz['is_mood_fillable'] = true; + $detailz['is_bedtime_fillable'] = true; + + UserDetailz::create($detailz); + + CircumferenceMeasure::create([ + 'user_id' => $newUser->id, + 'chest_circumference' => $detailz['chest_circumference'], + 'waist_circumference' => $detailz['waist_circumference'], + 'hip_circumference' => $detailz['hip_circumference'] + ]); + + $credentials = $request->only('email', 'password'); + + if (Auth::attempt($credentials)) { + $token = $newUser->createToken('mobile'); + return response()->json(['token' => $token], 200); + } else { + return response()->json(['error' => 'Unauthorized'], 401); + } + } + + public function login(Request $request) + { + $credentials = $request->only('email', 'password'); + + if (Auth::attempt($credentials)) { + $token = $request->user()->createToken('mobile'); + return response()->json(['token' => $token], 200); + } else { + return response()->json(['error' => 'Unauthorized'], 401); + } + } + + + +} \ No newline at end of file diff --git a/routes/api.php b/routes/api.php index eb6fa48..359a108 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,7 +1,11 @@ + +760 B +PHP get('/user', function (Request $request) { return $request->user(); }); +Route::post('/register', [MobileRegisterController::class, 'register']); +Route::post('/login', [MobileRegisterController::class, 'login']); \ No newline at end of file