mirror of
https://git.meshkee.com/cssd/cssd-back.git
synced 2026-10-11 15:11:06 +03:30
Come BackEnd
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
|
||||
|
||||
class ForgotPasswordController extends Controller
|
||||
{
|
||||
use SendsPasswordResetEmails;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
|
||||
protected function sendResetLinkResponse($response)
|
||||
{
|
||||
return response()->json(['status' => 200, 'message' => trans($response)]);
|
||||
}
|
||||
|
||||
protected function sendResetLinkFailedResponse(Request $request, $response)
|
||||
{
|
||||
return response()->json(['status' => 401, 'email' => trans($response)]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class LoginController extends Controller
|
||||
{
|
||||
|
||||
public function login(Request $request)
|
||||
{
|
||||
$this->validate($request, $this->rules(), $this->validationErrorMessages());
|
||||
|
||||
$request = Request::create('/oauth/token', 'POST', [
|
||||
'grant_type' => 'password',
|
||||
'client_id' => config('services.vue_client.id'),
|
||||
'client_secret' => config('services.vue_client.secret'),
|
||||
'username' => $request->cell_number,
|
||||
'password' => $request->password,
|
||||
]);
|
||||
|
||||
return app()->handle($request);
|
||||
}
|
||||
|
||||
public function logout()
|
||||
{
|
||||
$accessToken = auth()->user()->token();
|
||||
|
||||
DB::table('oauth_access_tokens')->where('id', $accessToken->id)->delete();
|
||||
DB::table('oauth_refresh_tokens')->where('access_token_id', $accessToken->id)->delete();
|
||||
|
||||
return response()->json(['status' => 200]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the login validation rules.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function rules()
|
||||
{
|
||||
return [
|
||||
'cell_number' => 'required',
|
||||
'password' => 'required|min:6',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the login validation error messages.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function validationErrorMessages()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
use App\User;
|
||||
|
||||
class RegisterController extends Controller
|
||||
{
|
||||
/**
|
||||
* Register the given user.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function register(Request $request)
|
||||
{
|
||||
$this->validate($request, $this->rules(), $this->validationErrorMessages());
|
||||
|
||||
$user = new User();
|
||||
$user->name = $request->name;
|
||||
$user->email = $request->email;
|
||||
$user->password = bcrypt( $request->password );
|
||||
$user->save();
|
||||
|
||||
return (new LoginController())->login($request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the user registration validation rules.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function rules()
|
||||
{
|
||||
return [
|
||||
'name' => 'required|string|max:80',
|
||||
'email' => 'required|email|unique:users',
|
||||
'password' => 'required|confirmed|min:6',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the user registration validation error messages.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function validationErrorMessages()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||
|
||||
class ResetPasswordController extends Controller
|
||||
{
|
||||
use ResetsPasswords;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the given user's password.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function reset(Request $request)
|
||||
{
|
||||
$this->validate($request, $this->rules(), $this->validationErrorMessages());
|
||||
|
||||
// Here we will attempt to reset the user's password. If it is successful we
|
||||
// will update the password on an actual user model and persist it to the
|
||||
// database. Otherwise we will parse the error and return the response.
|
||||
$response = $this->broker()->reset(
|
||||
$this->credentials($request), function ($user, $password) {
|
||||
$this->resetPassword($user, $password);
|
||||
}
|
||||
);
|
||||
|
||||
// If the password was successfully reset, we will redirect the user back to
|
||||
// the application's home authenticated view. If there is an error we can
|
||||
// redirect them back to where they came from with their error message.
|
||||
return $response == Password::PASSWORD_RESET
|
||||
? $this->sendResetResponse($request)
|
||||
: $this->sendResetFailedResponse($request, $response);
|
||||
}
|
||||
|
||||
protected function sendResetResponse($request)
|
||||
{
|
||||
return (new LoginController())->login($request);
|
||||
}
|
||||
|
||||
protected function sendResetFailedResponse(Request $request, $response)
|
||||
{
|
||||
return response()->json(['status' => 401, 'email' => trans($response)]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
namespace App\Http\Controllers\Auth;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Transformers\Json;
|
||||
use App\User;
|
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
|
||||
use Illuminate\Http\Request;
|
||||
class ForgotPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password reset emails and
|
||||
| includes a trait which assists in sending these notifications from
|
||||
| your application to your users. Feel free to explore this trait.
|
||||
|
|
||||
*/
|
||||
use SendsPasswordResetEmails;
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
/**
|
||||
* Send a reset link to the given user.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function getResetToken(Request $request)
|
||||
{
|
||||
dd($request->all());
|
||||
$this->validate($request, ['email' => 'required|email']);
|
||||
if ($request->wantsJson()) {
|
||||
$user = User::where('email', $request->input('email'))->first();
|
||||
if (!$user) {
|
||||
return response()->json(Json::response(null, trans('passwords.user')), 400);
|
||||
}
|
||||
$token = $this->broker()->createToken($user);
|
||||
return response()->json(Json::response(['token' => $token]));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\User;
|
||||
// use Illuminate\Support\Facades\Auth;
|
||||
// use App\Appended\Traites\Auth\Verification;
|
||||
use Lcobucci\JWT\Parser;
|
||||
|
||||
use Validator;
|
||||
|
||||
class PassportController extends Controller
|
||||
{
|
||||
// use Verification;
|
||||
protected $field;
|
||||
|
||||
/**
|
||||
* login api
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function login(Request $request)
|
||||
{
|
||||
$this->validate($request, $this->rules(), $this->validationErrorMessages());
|
||||
$request = Request::create('/oauth/token', 'POST', [
|
||||
'grant_type' => 'password',
|
||||
'client_id' => config('services.vue_client.id'),
|
||||
'client_secret' => config('services.vue_client.secret'),
|
||||
'username' => $request->cell_number,
|
||||
'password' => $request->password,
|
||||
]);
|
||||
return app()->handle($request);
|
||||
// $user = User::where('cell_number', $request->cell_number)->first();
|
||||
// if ($user && \Hash::check($request->password, $user->password)) {
|
||||
// $token = $user->createToken('Laravel password Grant Client')->accessToken;
|
||||
// $response = ['token' => $token];
|
||||
// return response()->json($response, 200);
|
||||
// } else {
|
||||
// return response()->json(trans('auth.failed'), 422);
|
||||
// }
|
||||
}
|
||||
|
||||
public function logout(Request $request)
|
||||
{
|
||||
$value = $request->bearerToken();
|
||||
$id = (new Parser())->parse($value)->getHeader('jti');
|
||||
$token = $request->user()->tokens->find($id);
|
||||
$token->revoke();
|
||||
return response()->json(trans('auth.logout_success'), 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register api
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function register(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|string|max:255',
|
||||
'medical_center_id' => 'required',
|
||||
'email' => 'email|max:255|unique:users',
|
||||
'cell_number' => 'required|digits_between:10,11|unique:users',
|
||||
'password' => 'required|string|min:6|confirmed',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return response()->json(['error' => $validator->errors()], 401);
|
||||
}
|
||||
|
||||
$input = $request->all();
|
||||
$input['password'] = bcrypt($input['password']);
|
||||
$input['status'] = 'Registered';
|
||||
$user = User::create($input);
|
||||
$this->phone_confirmation($user);
|
||||
|
||||
$success['token'] = $user->createToken('MyApp')->accessToken;
|
||||
$success['name'] = $user->name;
|
||||
|
||||
return response()->json(['success' => $success], 200);
|
||||
}
|
||||
|
||||
public function resetCode(Request $request)
|
||||
{
|
||||
$user = User::where('cell_number', $request->cell_number)->where('verified', 0)->first();
|
||||
if ($user) {
|
||||
$this->phone_confirmation($user);
|
||||
return response()->json(['success' => true], 200);
|
||||
}
|
||||
return response()->json(['success' => false], 403);
|
||||
}
|
||||
|
||||
public function sendLinkEmail(Request $request)
|
||||
{
|
||||
return response()->json(app('App\Http\Controllers\Auth\ForgotPasswordController')->sendResetLinkEmail($request));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
namespace App\Http\Controllers\Auth;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Transformers\Json;
|
||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
class ResetPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password reset requests
|
||||
| and uses a simple trait to include this behavior. You're free to
|
||||
| explore this trait and override any methods you wish to tweak.
|
||||
|
|
||||
*/
|
||||
use ResetsPasswords;
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
/**
|
||||
* Reset the given user's password.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function reset(Request $request)
|
||||
{
|
||||
$this->validate($request, $this->rules(), $this->validationErrorMessages());
|
||||
// Here we will attempt to reset the user's password. If it is successful we
|
||||
// will update the password on an actual user model and persist it to the
|
||||
// database. Otherwise we will parse the error and return the response.
|
||||
$response = $this->broker()->reset(
|
||||
$this->credentials($request), function ($user, $password) {
|
||||
$this->resetPassword($user, $password);
|
||||
}
|
||||
);
|
||||
if ($request->wantsJson()) {
|
||||
if ($response == Password::PASSWORD_RESET) {
|
||||
return response()->json(Json::response(null, trans('passwords.reset')));
|
||||
} else {
|
||||
return response()->json(Json::response($request->input('email'), trans($response), 202));
|
||||
}
|
||||
}
|
||||
// If the password was successfully reset, we will redirect the user back to
|
||||
// the application's home authenticated view. If there is an error we can
|
||||
// redirect them back to where they came from with their error message.
|
||||
return $response == Password::PASSWORD_RESET
|
||||
? $this->sendResetResponse($response)
|
||||
: $this->sendResetFailedResponse($request, $response);
|
||||
}
|
||||
}
|
||||
@@ -2,8 +2,13 @@
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
||||
use Illuminate\Foundation\Auth\RedirectsUsers;
|
||||
use Illuminate\Foundation\Auth\ThrottlesLogins;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class LoginController extends Controller
|
||||
{
|
||||
@@ -17,23 +22,103 @@ class LoginController extends Controller
|
||||
| to conveniently provide its functionality to your applications.
|
||||
|
|
||||
*/
|
||||
use RedirectsUsers, ThrottlesLogins;
|
||||
|
||||
use AuthenticatesUsers;
|
||||
protected $redirectTo = '/';
|
||||
|
||||
/**
|
||||
* Where to redirect users after login.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest')->except('logout');
|
||||
}
|
||||
|
||||
public function showLoginForm()
|
||||
{
|
||||
return view('auth.login');
|
||||
}
|
||||
|
||||
public function login(Request $request)
|
||||
{
|
||||
$this->validateLogin($request);
|
||||
|
||||
if ($this->hasTooManyLoginAttempts($request)) {
|
||||
$this->fireLockoutEvent($request);
|
||||
|
||||
return $this->sendLockoutResponse($request);
|
||||
}
|
||||
|
||||
if ($this->attemptLogin($request)) {
|
||||
|
||||
return $this->sendLoginResponse($request);
|
||||
}
|
||||
|
||||
$this->incrementLoginAttempts($request);
|
||||
return $this->sendFailedLoginResponse($request);
|
||||
}
|
||||
|
||||
protected function validateLogin(Request $request)
|
||||
{
|
||||
$this->validate($request, [
|
||||
$this->username() => 'required|string',
|
||||
'password' => 'required|string',
|
||||
]);
|
||||
}
|
||||
|
||||
protected function attemptLogin(Request $request)
|
||||
{
|
||||
return $this->guard()->attempt(
|
||||
$this->credentials($request), $request->filled('remember')
|
||||
);
|
||||
}
|
||||
|
||||
protected function credentials(Request $request)
|
||||
{
|
||||
return $request->only($this->username(), 'password');
|
||||
}
|
||||
|
||||
protected function sendLoginResponse(Request $request)
|
||||
{
|
||||
$request->session()->regenerate();
|
||||
$this->clearLoginAttempts($request);
|
||||
|
||||
// $request->session()->put(['user_status'=> 'user logged in!']);
|
||||
return $this->authenticated($request, $this->guard()->user())
|
||||
?: redirect()->intended($this->redirectTo);
|
||||
|
||||
}
|
||||
|
||||
protected function authenticated(Request $request, $user)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
protected function sendFailedLoginResponse(Request $request)
|
||||
{
|
||||
$errors = [$this->username() => trans('auth.failed')];
|
||||
|
||||
if ($request->expectsJson()) {
|
||||
return response()->json($errors, 422);
|
||||
}
|
||||
|
||||
return redirect()->back()
|
||||
->withInput($request->only($this->username(), 'remember'))
|
||||
->withErrors($errors);
|
||||
|
||||
}
|
||||
|
||||
public function username()
|
||||
{
|
||||
return 'cell_number';
|
||||
}
|
||||
|
||||
public function logout(Request $request)
|
||||
{
|
||||
$this->guard()->logout();
|
||||
$request->session()->invalidate();
|
||||
return redirect('/');
|
||||
}
|
||||
|
||||
protected function guard()
|
||||
{
|
||||
return Auth::guard();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,14 @@ use App\User;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Foundation\Auth\RegistersUsers;
|
||||
// use Illuminate\Foundation\Auth\RegistersUsers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Auth\Events\Registered;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Appended\Traites\Auth\Verification;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use App\Appended\Traites\Auth\Mc;
|
||||
|
||||
class RegisterController extends Controller
|
||||
{
|
||||
@@ -20,15 +27,15 @@ class RegisterController extends Controller
|
||||
| provide this functionality without requiring any additional code.
|
||||
|
|
||||
*/
|
||||
|
||||
use RegistersUsers;
|
||||
use Verification;
|
||||
// use RegistersUsers;
|
||||
|
||||
/**
|
||||
* Where to redirect users after registration.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
protected $redirectTo = '/';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
@@ -37,7 +44,7 @@ class RegisterController extends Controller
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
// $this->middleware('guest');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -49,10 +56,13 @@ class RegisterController extends Controller
|
||||
protected function validator(array $data)
|
||||
{
|
||||
return Validator::make($data, [
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
|
||||
'password' => ['required', 'string', 'min:8', 'confirmed'],
|
||||
'name' => 'required|string|max:255',
|
||||
'medical_center_id' => 'required',
|
||||
'email' => 'email|max:255|unique:users',
|
||||
'cell_number' => 'required|digits_between:10,11|unique:users',
|
||||
'password' => 'required|string|min:6|confirmed',
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -63,10 +73,69 @@ class RegisterController extends Controller
|
||||
*/
|
||||
protected function create(array $data)
|
||||
{
|
||||
return User::create([
|
||||
$userData = [
|
||||
'name' => $data['name'],
|
||||
'password' => bcrypt($data['password']),
|
||||
'email' => $data['email'],
|
||||
'password' => Hash::make($data['password']),
|
||||
]);
|
||||
'cell_number' => $data['cell_number'],
|
||||
'medical_center_id' => $data['medical_center_id'],
|
||||
'status' => 'Registered',
|
||||
];
|
||||
|
||||
$userData['email'] ==="" ? $userData['email'] = null : null;
|
||||
$userData['cell_number'] ==="" ? $userData['cell_number'] = null : null;
|
||||
|
||||
// $answer=$data['mathcaptcha'];
|
||||
|
||||
$user = User::create($userData);
|
||||
if ($data['cell_number']) {
|
||||
session(['temp_user' => $user]);
|
||||
// $this->phone_confirmation($user);
|
||||
} else
|
||||
throw new \Exception('لطفا شماره همراه خود را وارد نمایید.');
|
||||
|
||||
return $user;
|
||||
|
||||
|
||||
// $user = User::create($userData);
|
||||
// dd($user);
|
||||
|
||||
// if (!empty($userData['email'])) {
|
||||
// $this->mail_confirmation($user,'register');
|
||||
// } else {
|
||||
// $this->phone_confirmation($user);
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
public function showRegistrationForm()
|
||||
{
|
||||
return view('auth.register');
|
||||
}
|
||||
|
||||
public function register(Request $request)
|
||||
{
|
||||
$this->validator($request->all())->validate();
|
||||
|
||||
event(new Registered($user = $this->create($request->all())));
|
||||
\Auth::loginUsingId($user->id);
|
||||
return $this->registered($request, $user)
|
||||
?: response()->json(['url' => $this->redirectTo, 'message' => 'ثبت نام شما با موفقیت انجام شد.']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the guard to be used during registration.
|
||||
*
|
||||
* @return \Illuminate\Contracts\Auth\StatefulGuard
|
||||
*/
|
||||
protected function guard()
|
||||
{
|
||||
return Auth::guard();
|
||||
}
|
||||
|
||||
protected function registered(Request $request, $user)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class HomeController extends Controller
|
||||
{
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the application dashboard.
|
||||
*
|
||||
* @return \Illuminate\Contracts\Support\Renderable
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
return view('home');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\MedicalCenter;
|
||||
use App\User;
|
||||
use App\Http\Requests\StoreMedicalCenterRequest;
|
||||
|
||||
class MedicalCenterController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$MedicalCenters = MedicalCenter::with('users')->paginate(10);
|
||||
return response()->json(['MedicalCenters' => $MedicalCenters, 'LastPage' => $MedicalCenters->lastPage()]);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function store(StoreMedicalCenterRequest $request)
|
||||
{
|
||||
$MedicalCenter = MedicalCenter::create($request->all());
|
||||
return response()->json(trans('messages.success'));
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
// $MedicalCenter = MedicalCenter::with('users')->findOrFail($id);
|
||||
// return response()->json(['MedicalCenter' => $MedicalCenter]);
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$MedicalCenter = MedicalCenter::with('users')->findOrFail($id);
|
||||
return response()->json(['MedicalCenter' => $MedicalCenter]);
|
||||
}
|
||||
|
||||
public function update(StoreMedicalCenterRequest $request, MedicalCenter $MedicalCenter)
|
||||
{
|
||||
$MedicalCenter->update($request->all());
|
||||
return response()->json(trans('messages.success'));
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\TestResult;
|
||||
|
||||
class TestResultController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$TestResult = TestResult::with('testtype')->paginate(10);
|
||||
return response()->json(['TestResult' => $TestResult, 'LastPage' => $TestResult->lastPage()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$TestResult = [
|
||||
'user_id' => Auth::user()->id,
|
||||
'autoclave_id' => $request->autoclave_id,
|
||||
'test_type_id' => $request->test_type_id,
|
||||
'result' => $request->result,
|
||||
'verified' => 0,
|
||||
];
|
||||
$TestResultObj = TestResult::create($TestResult);
|
||||
$TestResultInfo = $request->info;
|
||||
|
||||
// $TestType = TestType::with('inputs')->where('id',$request->test_type_id)->first();
|
||||
$Inputs = Input::where('test_type_id',$request->test_type_id)->get();
|
||||
foreach ($Inputs as $Input) {
|
||||
if ($Input->type == 'Select' || $Input->type == 'CheckBox') {
|
||||
$OptionIDs = $Input->options->pluck('id')->toArray();
|
||||
$Value = $OptionIDs;
|
||||
}
|
||||
else {
|
||||
$Value = $TestResultInfo[$Input->name];
|
||||
}
|
||||
$InputValueObj = InputValue::create(['test_result_id' => $TestResultObj->id , 'input_id' => $Input->id , 'value' => $Value]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, TestResult $TestResult)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'user_id' => 'required',
|
||||
'autoclave_id' => 'required',
|
||||
'test_type_id' => 'required',
|
||||
'result' => 'required',
|
||||
'verified' => 'required',
|
||||
]);
|
||||
$TestResult->update($request->all());
|
||||
return response()->json(trans('messages.success'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\TestType;
|
||||
use App\Input;
|
||||
use App\Option;
|
||||
use App\Http\Requests\StoreTestTypeRequest;
|
||||
|
||||
class TestTypeController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$TestTypes = TestType::paginate(10);
|
||||
return response()->json(['TestTypes' => $TestTypes, 'LastPage' => $TestTypes->lastPage()]);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function CreateInput($Input,$TestType,$ParentID = null)
|
||||
{
|
||||
// dd($Input['name'],$TestType->id,$ParentID);
|
||||
//---------------------------------------------Input
|
||||
$InputData = [
|
||||
'name' => $Input['name'],
|
||||
'type' => $Input['type'],
|
||||
'size' => $Input['size'],
|
||||
'test_type_id' => $TestType->id,
|
||||
'parent_id' => $ParentID
|
||||
];
|
||||
$InputObj = Input::create($InputData);
|
||||
//---------------------------------------------Input
|
||||
//---------------------------------------------Option
|
||||
if ($Input['type'] == 'CheckBox' || $Input['type'] == 'Select') {
|
||||
foreach ($Input['options'] as $Option) {
|
||||
$Option = Option::create(['title' => $Option['title'] , 'input_id' => $InputObj->id]);
|
||||
}
|
||||
}
|
||||
//---------------------------------------------Option
|
||||
return $InputObj;
|
||||
|
||||
}
|
||||
public function CreateChildForm($Input,$TestType,$InputObj)
|
||||
{
|
||||
if (isset($Input['children'])) {
|
||||
foreach ($Input['children'] as $InputChild) {
|
||||
$InputChildObj = $this->CreateInput($InputChild,$TestType,$InputObj->id);
|
||||
if (isset($InputChild['children'])) {
|
||||
$this->CreateChildForm($InputChild,$TestType,$InputChildObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public function store(StoreTestTypeRequest $request)
|
||||
{
|
||||
$TestType = [
|
||||
'name' => $request['name'],
|
||||
'unique_code' => $request['unique_code'],
|
||||
'user_id' => auth('api')->user()->id
|
||||
];
|
||||
|
||||
$TestType = TestType::create($TestType);
|
||||
$TestTypeInfo = $request['info'];
|
||||
|
||||
foreach ($TestTypeInfo as $Input) {
|
||||
|
||||
$InputObj = $this->CreateInput($Input,$TestType);
|
||||
|
||||
if ($Input['type'] == 'Form') {
|
||||
$this->CreateChildForm($Input,$TestType,$InputObj);
|
||||
}
|
||||
}
|
||||
return response()->json(trans('messages.success'));
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function update(Request $request, TestType $TestType)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'name' => 'required|max:100|unique:test_types,'.$TestType->id,
|
||||
'unique_code' => 'required|max:100|unique:test_types,'.$TestType->id,
|
||||
'info.*.name'=>'required',
|
||||
'info.*.type'=>'required',
|
||||
'info.*.size'=>'required',
|
||||
'info.*.parent_id'=>'nullable|numeric|exists:inputs',
|
||||
]);
|
||||
$TestType = [
|
||||
'name' => $request->name,
|
||||
'unique_code' => $request->unique_code
|
||||
];
|
||||
$TestType->update($TestType);
|
||||
$TestTypeInfo = $request->info;
|
||||
|
||||
// foreach ($TestTypeInfo as $Input) {
|
||||
// if ($Input['id'] == 0) {
|
||||
// $InputObj = $this->CreateInput($Input,$TestType);
|
||||
// }
|
||||
// else {
|
||||
// // code...
|
||||
// }
|
||||
// $InputObj = $this->CreateInput($Input,$TestType);
|
||||
//
|
||||
// if ($Input->Type == 'Form') {
|
||||
// $this->CreateChildForm($Input);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Requests\StoreUserRequest;
|
||||
use App\User;
|
||||
|
||||
class UserController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$Users = User::where('medicalcenter',$request->medical_center_id)->paginate(10);
|
||||
return response()->json(['Users' => $Users, 'LastPage' => $Users->lastPage()]);
|
||||
}
|
||||
public function store(StoreUserRequest $request)
|
||||
{
|
||||
$UserData = [
|
||||
'name' => $request->name ,
|
||||
'cell_number' => $request->cell_number ,
|
||||
'medical_center_id' => $request->medical_center_id ,
|
||||
'status' => 'PreRegister',
|
||||
'verified' => 1,
|
||||
'password' => bcrypt($request->password),
|
||||
];
|
||||
$User = User::create($UserData);
|
||||
|
||||
return response()->json(trans('messages.success'));
|
||||
}
|
||||
public function edit(User $User)
|
||||
{
|
||||
return response()->json(['User' => $User]);
|
||||
}
|
||||
public function update(StoreUserRequest $request, User $User)
|
||||
{
|
||||
$UserData = [
|
||||
'name' => $request->name ,
|
||||
'cell_number' => $request->cell_number ,
|
||||
'medical_center_id' => $request->medical_center_id ,
|
||||
'status' => 'PreRegister',
|
||||
'verified' => 1,
|
||||
'password' => bcrypt($request->password),
|
||||
];
|
||||
$User->update($UserData);
|
||||
return response()->json(trans('messages.success'));
|
||||
}
|
||||
public function destroy(User $User)
|
||||
{
|
||||
if (auth('api')->user()->can('delete', $User)) {
|
||||
return response()->json(trans('messages.failed'));
|
||||
}
|
||||
$User->delete();//?????????????????
|
||||
}
|
||||
}
|
||||
@@ -19,6 +19,7 @@ class Kernel extends HttpKernel
|
||||
\App\Http\Middleware\TrimStrings::class,
|
||||
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
|
||||
\App\Http\Middleware\TrustProxies::class,
|
||||
\App\Http\Middleware\Cors::class,
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php // /app/Http/Middleware/Cors.php
|
||||
namespace App\Http\Middleware;
|
||||
use Closure;
|
||||
class Cors {
|
||||
|
||||
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
/* @var $response Response */
|
||||
$response = $next($request)
|
||||
->header('Access-Control-Allow-Origin', '*')
|
||||
->header('Access-Control-Allow-credentials', true)
|
||||
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
|
||||
if (!$request->isMethod('OPTIONS')) {
|
||||
return $response;
|
||||
}
|
||||
$allow = $response->headers->get('Allow'); // true list of allowed methods
|
||||
if (!$allow) {
|
||||
return $response;
|
||||
}
|
||||
$headers = [
|
||||
'Access-Control-Allow-Methods' => $allow,
|
||||
'Access-Control-Max-Age' => 3600,
|
||||
'Access-Control-Allow-Headers' => 'X-Requested-With, Origin, X-Csrftoken, Content-Type, Accept',
|
||||
];
|
||||
return $response->withHeaders($headers);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -19,6 +19,6 @@ class VerifyCsrfToken extends Middleware
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
//
|
||||
'api/*'
|
||||
];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\MedicalCenter;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
|
||||
class StoreMedicalCenterRequest extends FormRequest
|
||||
{
|
||||
public function authorize()
|
||||
{
|
||||
if ($this->method() == 'POST') {
|
||||
return auth('api')->check() && auth('api')->user()->can('store', MedicalCenter::class);
|
||||
} else {
|
||||
$MedicalCenter = $this->route('MedicalCenter');
|
||||
return auth('api')->check() && $MedicalCenter && auth('api')->user()->can('update', $MedicalCenter);
|
||||
}
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
switch ($this->method()) {
|
||||
case 'POST': {
|
||||
return [
|
||||
'name' => 'required|max:100|unique:medical_centers',
|
||||
// 'operatores.*.name'=>'required|string|max:255',
|
||||
// 'operatores.*.cell_number'=>'required|digits_between:10,11|unique:users',
|
||||
// 'operatores.*.password'=>'required|string|min:6',
|
||||
];
|
||||
break;
|
||||
}
|
||||
case 'PUT':
|
||||
case 'PATCH': {
|
||||
$MedicalCenter = $this->route('MedicalCenter');
|
||||
return [
|
||||
'name' => 'required|max:100|unique:medical_centers,id,'.$MedicalCenter->id,
|
||||
// 'operatores.*.name'=>'required|string|max:255',
|
||||
// 'operatores.*.cell_number'=>'required|digits_between:10,11|unique:users',
|
||||
// 'operatores.*.password'=>'required|string|min:6',
|
||||
];
|
||||
break;
|
||||
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\TestType;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
|
||||
class StoreTestTypeRequest extends FormRequest
|
||||
{
|
||||
public function authorize()
|
||||
{
|
||||
if ($this->method() == 'POST') {
|
||||
return auth('api')->check() && auth('api')->user()->can('store', TestType::class);
|
||||
} else {
|
||||
$TestType = $this->route('TestType');
|
||||
return auth('api')->check() && $TestType && auth('api')->user()->can('update', $TestType);
|
||||
}
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
switch ($this->method()) {
|
||||
case 'POST': {
|
||||
return [
|
||||
'name' => 'required|max:100|unique:test_types',
|
||||
'unique_code' => 'required|max:100|unique:test_types',
|
||||
'info.*.name'=>'required',
|
||||
'info.*.type'=>'required',
|
||||
'info.*.size'=>'required',
|
||||
'info.*.parent_id'=>'nullable|numeric|exists:inputs,id',
|
||||
];
|
||||
break;
|
||||
}
|
||||
case 'PUT':
|
||||
case 'PATCH': {
|
||||
$TestType = $this->route('TestType');
|
||||
return [
|
||||
'name' => 'required|max:100|unique:test_types,id,'.$TestType->id,
|
||||
'unique_code' => 'required|max:100|unique:test_types,id,'.$TestType->id,
|
||||
'info.*.name'=>'required',
|
||||
'info.*.type'=>'required',
|
||||
'info.*.size'=>'required',
|
||||
'info.*.parent_id'=>'nullable|numeric|exists:inputs,id',
|
||||
];
|
||||
break;
|
||||
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\User;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
|
||||
class StoreUserRequest extends FormRequest
|
||||
{
|
||||
public function authorize()
|
||||
{
|
||||
if ($this->method() == 'POST') {
|
||||
return auth('api')->check() && auth('api')->user()->can('store', User::class);
|
||||
} else {
|
||||
$User = $this->route('User');
|
||||
return auth('api')->check() && $User && auth('api')->user()->can('update', $User);
|
||||
}
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
switch ($this->method()) {
|
||||
case 'POST': {
|
||||
return [
|
||||
'name'=>'required|string|max:255',
|
||||
'cell_number'=>'required|digits_between:10,11|unique:users',
|
||||
'password'=>'required|string|min:6',
|
||||
'medical_center_id' => 'required|numeric|exists:medical_centers,id',
|
||||
];
|
||||
break;
|
||||
}
|
||||
case 'PUT':
|
||||
case 'PATCH': {
|
||||
$User = $this->route('User');
|
||||
return [
|
||||
'name'=>'required|string|max:255',
|
||||
'cell_number'=>'required|digits_between:10,11|unique:users,id,'.$User->id,
|
||||
'password'=>'required|string|min:6',
|
||||
'medical_center_id' => 'required|numeric|exists:medical_centers,id',
|
||||
];
|
||||
break;
|
||||
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user