mirror of
https://git.meshkee.com/cssd/cssd-back.git
synced 2026-10-10 19:01:05 +03:30
Come BackEnd
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace App\Appended\Classes\Common\Response\Facades;
|
||||
|
||||
use Illuminate\Support\Facades\Facade;
|
||||
|
||||
class MessageResponse extends Facade {
|
||||
|
||||
protected static function getFacadeAccessor() { return 'messages'; }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace App\Appended\Classes\Common\Response;
|
||||
|
||||
class MessageResponse
|
||||
{
|
||||
public function view($view = null, $data = null)
|
||||
{
|
||||
return response()->json(['data' => $data, 'view' => $view], 200);
|
||||
}
|
||||
|
||||
public function success($message = null, $title = null, $status = 'Success' , $data = null , $view = null )
|
||||
{
|
||||
$message = isset($message) ? $message : trans('messages.success_title');
|
||||
$title = isset($title) ? $title : trans('messages.success');
|
||||
return response()->json(['status' => $status, 'message' => $message, 'title' => $title, 'data' => $data, 'view' => $view], 200);
|
||||
}
|
||||
|
||||
public function error($message = null, $title = null, $status = 'Faild', $statusCode = 422 )
|
||||
{
|
||||
$message = isset($message) ? $message : trans('messages.faild_message');
|
||||
$title = isset($title) ? $title : trans('messages.faild');
|
||||
return response()->json(['status' => $status, 'errors' => ['message' => [$message, 'Title' => $title]]], $statusCode);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
<?php
|
||||
namespace App\Appended\Traites\Auth;
|
||||
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Mail\RegistrationMailer;
|
||||
use App\Jobs\SendVerificationSMS;
|
||||
|
||||
|
||||
trait Verification
|
||||
{
|
||||
|
||||
private function setVerified($user_id, $verification)
|
||||
{
|
||||
$verify_number = $verification === 'email' ? 1 : 2;
|
||||
$user = is_numeric($user_id) ? \App\User::select('id', 'verified')->findOrFail($user_id) : $user_id;
|
||||
$user->verified = $user->verified | $verify_number;
|
||||
$user->save();
|
||||
return $user;
|
||||
}
|
||||
|
||||
/**
|
||||
*--------------------------------------------------------------------------
|
||||
* farid saravi
|
||||
* This function checks confirmation email and set user in the database as verified. lsb
|
||||
*--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public function confirm($token)
|
||||
{
|
||||
$user_id = Cache::pull($token);
|
||||
if ($user_id) {
|
||||
$user = $this->setVerified($user_id, 'email');
|
||||
if (! \Auth::check()) {
|
||||
$this->guard()->login($user);
|
||||
}
|
||||
}
|
||||
return redirect('/');
|
||||
}
|
||||
|
||||
/**
|
||||
*--------------------------------------------------------------------------
|
||||
* farid saravi
|
||||
* This function checks confirmation sms and set user in the database as verified sms. msb
|
||||
*--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public function confirm_phone(Request $request)
|
||||
{
|
||||
$user_id = Cache::pull('phone_number_' . $request->number);
|
||||
if ($user_id)
|
||||
{
|
||||
$user = $this->setVerified($user_id, 'phone_number');
|
||||
if (! \Auth::check())
|
||||
{
|
||||
$this->guard()->login($user);
|
||||
}
|
||||
return response()->json(['status' => 'success']);
|
||||
}
|
||||
return response()->json(['status' => 'fail'], 422);
|
||||
}
|
||||
|
||||
/**
|
||||
*--------------------------------------------------------------------------
|
||||
* farid saravi
|
||||
* This function sends confirmation email to a user.
|
||||
* @param \App\User
|
||||
* @return void
|
||||
*--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public function mail_confirmation($user, $Type=null)
|
||||
{
|
||||
$Type = ($Type == null) ? 'VerifyUser' : $Type;
|
||||
$email_token = str_random(30);
|
||||
Cache::put($email_token, $user->id, Carbon::now()->addDays(2));
|
||||
Mail::to($user->email)->send(new RegistrationMailer($user, $email_token, $Type));
|
||||
}
|
||||
|
||||
/**
|
||||
*--------------------------------------------------------------------------
|
||||
* farid saravi
|
||||
* This function sends confirmation sms to a user.
|
||||
* @param \App\User
|
||||
* @return void
|
||||
*--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public function phone_confirmation($user)
|
||||
{
|
||||
$rand_number = rand(100000, 999999);
|
||||
Cache::put('phone_number_' . $rand_number, $user->id, 60);
|
||||
if( $user->cell_number != '' && $user->cell_number != null ) {
|
||||
$MessageText = ' کد فعالسازی شما :'. $rand_number;
|
||||
$this->sendSMS($user->cell_number, $MessageText);
|
||||
}
|
||||
}
|
||||
|
||||
protected function sendSMS($phone_number, $message)
|
||||
{
|
||||
$options = array(
|
||||
'login' => 'hs-harmony-istore',
|
||||
'password' => 'WillaSMS47CD47'
|
||||
);
|
||||
$client = new \SoapClient('http://sms.sms-bartar.com/webservice/?WSDL', $options);
|
||||
|
||||
try {
|
||||
$messageId = $client->send($phone_number, $message);
|
||||
|
||||
} catch (SoapFault $sf) {
|
||||
|
||||
print $sf->faultcode . "\n";
|
||||
print $sf->faultstring . "\n";
|
||||
|
||||
return ['code' => $sf->faultcode, 'message' => $sf->faultstring];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Gallery extends Model
|
||||
{
|
||||
|
||||
protected $fillable = ['user_id', 'path'];
|
||||
public $timestamps = false;
|
||||
|
||||
|
||||
// public function business_item()
|
||||
// {
|
||||
// return $this->morphedByMany('App\BusinessItem', 'uploadable');
|
||||
// }
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Input extends Model
|
||||
{
|
||||
public $fillable = ['name','type','size','test_type_id','parent_id'];
|
||||
public function testtype()
|
||||
{
|
||||
return $this->belongsTo('App\TestType');
|
||||
}
|
||||
public function parent()
|
||||
{
|
||||
return $this->belongsTo('App\Input', 'parent_id');
|
||||
}
|
||||
public function children()
|
||||
{
|
||||
return $this->hasMany('App\Input', 'parent_id');
|
||||
}
|
||||
public function options()
|
||||
{
|
||||
return $this->hasMany('App\Option');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class InputValue extends Model
|
||||
{
|
||||
public function input()
|
||||
{
|
||||
return $this->belongsTo('App\Input');
|
||||
}
|
||||
public function testresult()
|
||||
{
|
||||
return $this->belongsTo('App\TestResult');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class MedicalCenter extends Model
|
||||
{
|
||||
public $fillable = ['name'];
|
||||
public function users()
|
||||
{
|
||||
return $this->hasMany('App\User');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Option extends Model
|
||||
{
|
||||
public $fillable = ['title','input_id'];
|
||||
public function input()
|
||||
{
|
||||
return $this->belongsTo('App\Input');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\User;
|
||||
use App\MedicalCenter;
|
||||
use Doctrine\Tests\Common\Inflector\InflectorTest;
|
||||
|
||||
class MedicalCenterPolicy
|
||||
{
|
||||
|
||||
public function delete(User $User, MedicalCenter $MedicalCenter)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
public function update(User $User, MedicalCenter $MedicalCenter)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
public function store(User $User)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\User;
|
||||
use App\TestType;
|
||||
use Doctrine\Tests\Common\Inflector\InflectorTest;
|
||||
|
||||
class TestTypePolicy
|
||||
{
|
||||
|
||||
public function delete(User $User, TestType $TestType)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
public function update(User $User, TestType $TestType)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
|
||||
public function store(User $User)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\User;
|
||||
use Doctrine\Tests\Common\Inflector\InflectorTest;
|
||||
|
||||
class UserPolicy
|
||||
{
|
||||
|
||||
public function delete(User $User, User $Operator)
|
||||
{
|
||||
// if($User->hasRole('Admin') || $User->hasRole('Supervisor'))
|
||||
return true;
|
||||
}
|
||||
|
||||
public function update(User $User, User $Operator)
|
||||
{
|
||||
// if($User->hasRole('Admin') || $User->id == $Operator->id)
|
||||
return true;
|
||||
}
|
||||
|
||||
public function store(User $User)
|
||||
{
|
||||
// if($User->hasRole('Admin'))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
|
||||
use Laravel\Passport\Passport;
|
||||
|
||||
class AuthServiceProvider extends ServiceProvider
|
||||
{
|
||||
@@ -13,7 +14,9 @@ class AuthServiceProvider extends ServiceProvider
|
||||
* @var array
|
||||
*/
|
||||
protected $policies = [
|
||||
// 'App\Model' => 'App\Policies\ModelPolicy',
|
||||
'App\MedicalCenter' => 'App\Policies\MedicalCenterPolicy',
|
||||
'App\User' => 'App\Policies\UserPolicy',
|
||||
'App\TestType' => 'App\Policies\TestTypePolicy',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -25,6 +28,6 @@ class AuthServiceProvider extends ServiceProvider
|
||||
{
|
||||
$this->registerPolicies();
|
||||
|
||||
//
|
||||
Passport::routes();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class MessageServiceProvider extends ServiceProvider
|
||||
{
|
||||
protected $defer = true;
|
||||
|
||||
|
||||
public function register()
|
||||
{
|
||||
$this->app->singleton('messages', function() {
|
||||
return new \App\Appended\Classes\Common\Response\MessageResponse;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the services provided by the provider.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function provides()
|
||||
{
|
||||
return [MessageResponse::class];
|
||||
}
|
||||
}
|
||||
@@ -35,6 +35,9 @@ class RouteServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function map()
|
||||
{
|
||||
|
||||
$this->mapRoutes();
|
||||
|
||||
$this->mapApiRoutes();
|
||||
|
||||
$this->mapWebRoutes();
|
||||
@@ -66,8 +69,21 @@ class RouteServiceProvider extends ServiceProvider
|
||||
protected function mapApiRoutes()
|
||||
{
|
||||
Route::prefix('api')
|
||||
->middleware('api')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/api.php'));
|
||||
->middleware('api')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/api.php'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the routes without middleware for the application.
|
||||
*
|
||||
* These routes are typically stateless.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function mapRoutes()
|
||||
{
|
||||
Route::namespace($this->namespace)
|
||||
->group(base_path('routes/routes.php'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class TestResult extends Model
|
||||
{
|
||||
public function testtype()
|
||||
{
|
||||
return $this->belongsTo('App\TestType');
|
||||
}
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo('App\User');
|
||||
}
|
||||
public function inputvalues()
|
||||
{
|
||||
return $this->hasMany('App\InputValue');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class TestType extends Model
|
||||
{
|
||||
public $fillable = ['name','unique_code','user_id'];
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo('App\User');
|
||||
}
|
||||
public function testresults()
|
||||
{
|
||||
return $this->hasMany('App\TestResult');
|
||||
}
|
||||
public function inputs()
|
||||
{
|
||||
return $this->hasMany('App\Input');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
namespace App\Transformers;
|
||||
class Json
|
||||
{
|
||||
public static function response($data = null, $message = null)
|
||||
{
|
||||
return [
|
||||
'data' => $data,
|
||||
'message' => $message,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Uploadable extends Model
|
||||
{
|
||||
|
||||
protected $fillable = ['uploadable_id', 'uploadable_type', 'gallery_id'];
|
||||
public $timestamps = false;
|
||||
|
||||
public function gallery()
|
||||
{
|
||||
return $this->belongsTo('App\Gallery');
|
||||
}
|
||||
|
||||
}
|
||||
+21
-2
@@ -5,10 +5,11 @@ namespace App;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Laravel\Passport\HasApiTokens;
|
||||
|
||||
class User extends Authenticatable
|
||||
{
|
||||
use Notifiable;
|
||||
use Notifiable, HasApiTokens;
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
@@ -16,7 +17,7 @@ class User extends Authenticatable
|
||||
* @var array
|
||||
*/
|
||||
protected $fillable = [
|
||||
'name', 'email', 'password',
|
||||
'name', 'email', 'password','cell_number','status','medical_center_id'
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -36,4 +37,22 @@ class User extends Authenticatable
|
||||
protected $casts = [
|
||||
'email_verified_at' => 'datetime',
|
||||
];
|
||||
|
||||
public function medicalcenter()
|
||||
{
|
||||
return $this->belongsTo('App\MedicalCenter');
|
||||
}
|
||||
public function testresults()
|
||||
{
|
||||
return $this->hasMany('App\TestResult');
|
||||
}
|
||||
public function testtypes()
|
||||
{
|
||||
return $this->hasMany('App\TestType');
|
||||
}
|
||||
|
||||
public function findForPassport($username)
|
||||
{
|
||||
return $this->where('cell_number', $username)->first();
|
||||
}
|
||||
}
|
||||
|
||||
+4
-2
@@ -11,14 +11,16 @@
|
||||
"php": "^7.1.3",
|
||||
"fideloper/proxy": "^4.0",
|
||||
"laravel/framework": "5.8.*",
|
||||
"laravel/tinker": "^1.0"
|
||||
"laravel/passport": "^7.2",
|
||||
"laravel/tinker": "^1.0",
|
||||
"spatie/laravel-permission": "^2.36"
|
||||
},
|
||||
"require-dev": {
|
||||
"beyondcode/laravel-dump-server": "^1.0",
|
||||
"filp/whoops": "^2.0",
|
||||
"fzaninotto/faker": "^1.4",
|
||||
"mockery/mockery": "^1.0",
|
||||
"nunomaduro/collision": "^3.0",
|
||||
"nunomaduro/collision": "^2.0",
|
||||
"phpunit/phpunit": "^7.5"
|
||||
},
|
||||
"config": {
|
||||
|
||||
Generated
+986
-9
File diff suppressed because it is too large
Load Diff
@@ -174,6 +174,8 @@ return [
|
||||
// App\Providers\BroadcastServiceProvider::class,
|
||||
App\Providers\EventServiceProvider::class,
|
||||
App\Providers\RouteServiceProvider::class,
|
||||
App\Providers\MessageServiceProvider::class,
|
||||
Laravel\Passport\PassportServiceProvider::class,
|
||||
|
||||
],
|
||||
|
||||
@@ -225,6 +227,7 @@ return [
|
||||
'URL' => Illuminate\Support\Facades\URL::class,
|
||||
'Validator' => Illuminate\Support\Facades\Validator::class,
|
||||
'View' => Illuminate\Support\Facades\View::class,
|
||||
'MessageResponse' => App\Appended\Classes\Common\Response\Facades\MessageResponse::class,
|
||||
|
||||
],
|
||||
|
||||
|
||||
+1
-2
@@ -42,9 +42,8 @@ return [
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'driver' => 'token',
|
||||
'driver' => 'passport',
|
||||
'provider' => 'users',
|
||||
'hash' => false,
|
||||
],
|
||||
],
|
||||
|
||||
|
||||
+1
-1
@@ -97,6 +97,6 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'),
|
||||
'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'),
|
||||
|
||||
];
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
@@ -119,7 +117,6 @@ return [
|
||||
|
||||
'options' => [
|
||||
'cluster' => env('REDIS_CLUSTER', 'predis'),
|
||||
'prefix' => Str::slug(env('APP_NAME', 'laravel'), '_').'_database_',
|
||||
],
|
||||
|
||||
'default' => [
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'models' => [
|
||||
|
||||
/*
|
||||
* When using the "HasPermissions" trait from this package, we need to know which
|
||||
* Eloquent model should be used to retrieve your permissions. Of course, it
|
||||
* is often just the "Permission" model but you may use whatever you like.
|
||||
*
|
||||
* The model you want to use as a Permission model needs to implement the
|
||||
* `Spatie\Permission\Contracts\Permission` contract.
|
||||
*/
|
||||
|
||||
'permission' => Spatie\Permission\Models\Permission::class,
|
||||
|
||||
/*
|
||||
* When using the "HasRoles" trait from this package, we need to know which
|
||||
* Eloquent model should be used to retrieve your roles. Of course, it
|
||||
* is often just the "Role" model but you may use whatever you like.
|
||||
*
|
||||
* The model you want to use as a Role model needs to implement the
|
||||
* `Spatie\Permission\Contracts\Role` contract.
|
||||
*/
|
||||
|
||||
'role' => Spatie\Permission\Models\Role::class,
|
||||
|
||||
],
|
||||
|
||||
'table_names' => [
|
||||
|
||||
/*
|
||||
* When using the "HasRoles" trait from this package, we need to know which
|
||||
* table should be used to retrieve your roles. We have chosen a basic
|
||||
* default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'roles' => 'roles',
|
||||
|
||||
/*
|
||||
* When using the "HasPermissions" trait from this package, we need to know which
|
||||
* table should be used to retrieve your permissions. We have chosen a basic
|
||||
* default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'permissions' => 'permissions',
|
||||
|
||||
/*
|
||||
* When using the "HasPermissions" trait from this package, we need to know which
|
||||
* table should be used to retrieve your models permissions. We have chosen a
|
||||
* basic default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'model_has_permissions' => 'model_has_permissions',
|
||||
|
||||
/*
|
||||
* When using the "HasRoles" trait from this package, we need to know which
|
||||
* table should be used to retrieve your models roles. We have chosen a
|
||||
* basic default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'model_has_roles' => 'model_has_roles',
|
||||
|
||||
/*
|
||||
* When using the "HasRoles" trait from this package, we need to know which
|
||||
* table should be used to retrieve your roles permissions. We have chosen a
|
||||
* basic default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'role_has_permissions' => 'role_has_permissions',
|
||||
],
|
||||
|
||||
'column_names' => [
|
||||
|
||||
/*
|
||||
* Change this if you want to name the related model primary key other than
|
||||
* `model_id`.
|
||||
*
|
||||
* For example, this would be nice if your primary keys are all UUIDs. In
|
||||
* that case, name this `model_uuid`.
|
||||
*/
|
||||
|
||||
'model_morph_key' => 'model_id',
|
||||
],
|
||||
|
||||
/*
|
||||
* When set to true, the required permission/role names are added to the exception
|
||||
* message. This could be considered an information leak in some contexts, so
|
||||
* the default setting is false here for optimum safety.
|
||||
*/
|
||||
|
||||
'display_permission_in_exception' => false,
|
||||
|
||||
'cache' => [
|
||||
|
||||
/*
|
||||
* By default all permissions are cached for 24 hours to speed up performance.
|
||||
* When permissions or roles are updated the cache is flushed automatically.
|
||||
*/
|
||||
|
||||
'expiration_time' => \DateInterval::createFromDateString('24 hours'),
|
||||
|
||||
/*
|
||||
* The cache key used to store all permissions.
|
||||
*/
|
||||
|
||||
'key' => 'spatie.permission.cache',
|
||||
|
||||
/*
|
||||
* When checking for a permission against a model by passing a Permission
|
||||
* instance to the check, this key determines what attribute on the
|
||||
* Permissions model is used to cache against.
|
||||
*
|
||||
* Ideally, this should match your preferred way of checking permissions, eg:
|
||||
* `$user->can('view-posts')` would be 'name'.
|
||||
*/
|
||||
|
||||
'model_key' => 'name',
|
||||
|
||||
/*
|
||||
* You may optionally indicate a specific cache driver to use for permission and
|
||||
* role caching using any of the `store` drivers listed in the cache.php config
|
||||
* file. Using 'default' here means to use the `default` set in cache.php.
|
||||
*/
|
||||
|
||||
'store' => 'default',
|
||||
],
|
||||
];
|
||||
@@ -43,5 +43,9 @@ return [
|
||||
'tolerance' => env('STRIPE_WEBHOOK_TOLERANCE', 300),
|
||||
],
|
||||
],
|
||||
'vue_client' => [
|
||||
'id' => env('MIX_APP_CLIENT_ID'),
|
||||
'secret' => env('MIX_APP_CLIENT_SECRET'),
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
@@ -1,2 +1 @@
|
||||
*.sqlite
|
||||
*.sqlite-journal
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateMedicalCentersTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('medical_centers', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('medical_centers');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateUsersTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('users', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->string('email');
|
||||
$table->string('cell_number');
|
||||
$table->smallInteger('verified');
|
||||
$table->string('status');
|
||||
$table->unsignedBigInteger('medical_center_id');
|
||||
$table->foreign('medical_center_id')->references('id')->on('medical_centers');
|
||||
//$table->timestamp('email_verified_at')->nullable();
|
||||
$table->string('password');
|
||||
$table->rememberToken();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('users');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateTestTypesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('test_types', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->integer('unique_code');
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('test_types');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateTestResultsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('test_results', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('info');
|
||||
$table->string('result');
|
||||
$table->text('description');
|
||||
$table->smallInteger('verified');
|
||||
$table->integer('autoclave_id');
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users');
|
||||
$table->unsignedBigInteger('test_type_id');
|
||||
$table->foreign('test_type_id')->references('id')->on('test_types');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('test_results');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateInputsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('inputs', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->string('type');
|
||||
$table->unsignedBigInteger('test_type_id');
|
||||
$table->foreign('test_type_id')->references('id')->on('test_types');
|
||||
$table->unsignedBigInteger('parent_id')->nullable();
|
||||
$table->foreign('parent_id')->references('id')->on('inputs');
|
||||
$table->string('size');
|
||||
$table->string('value');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('inputs');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateInputValuesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('input_values', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('input_values');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateOptionsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('options', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('title');
|
||||
$table->unsignedBigInteger('input_id');
|
||||
$table->foreign('input_id')->references('id')->on('inputs');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('options');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateGalleriesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('galleries', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users');
|
||||
$table->string('path');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('galleries');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateUploadablesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('uploadables', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->unsignedBigInteger('uploadable_id');
|
||||
$table->string('uploadable_type');
|
||||
$table->unsignedBigInteger('gallery_id');
|
||||
$table->foreign('gallery_id')->references('id')->on('galleries');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('uploadables');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreatePermissionTables extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
$tableNames = config('permission.table_names');
|
||||
$columnNames = config('permission.column_names');
|
||||
|
||||
Schema::create($tableNames['permissions'], function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->string('name');
|
||||
$table->string('guard_name');
|
||||
$table->timestamps();
|
||||
});
|
||||
|
||||
Schema::create($tableNames['roles'], function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->string('name');
|
||||
$table->string('guard_name');
|
||||
$table->timestamps();
|
||||
});
|
||||
|
||||
Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames) {
|
||||
$table->unsignedInteger('permission_id');
|
||||
|
||||
$table->string('model_type');
|
||||
$table->unsignedBigInteger($columnNames['model_morph_key']);
|
||||
$table->index([$columnNames['model_morph_key'], 'model_type', ]);
|
||||
|
||||
$table->foreign('permission_id')
|
||||
->references('id')
|
||||
->on($tableNames['permissions'])
|
||||
->onDelete('cascade');
|
||||
|
||||
$table->primary(['permission_id', $columnNames['model_morph_key'], 'model_type'],
|
||||
'model_has_permissions_permission_model_type_primary');
|
||||
});
|
||||
|
||||
Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames) {
|
||||
$table->unsignedInteger('role_id');
|
||||
|
||||
$table->string('model_type');
|
||||
$table->unsignedBigInteger($columnNames['model_morph_key']);
|
||||
$table->index([$columnNames['model_morph_key'], 'model_type', ]);
|
||||
|
||||
$table->foreign('role_id')
|
||||
->references('id')
|
||||
->on($tableNames['roles'])
|
||||
->onDelete('cascade');
|
||||
|
||||
$table->primary(['role_id', $columnNames['model_morph_key'], 'model_type'],
|
||||
'model_has_roles_role_model_type_primary');
|
||||
});
|
||||
|
||||
Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) {
|
||||
$table->unsignedInteger('permission_id');
|
||||
$table->unsignedInteger('role_id');
|
||||
|
||||
$table->foreign('permission_id')
|
||||
->references('id')
|
||||
->on($tableNames['permissions'])
|
||||
->onDelete('cascade');
|
||||
|
||||
$table->foreign('role_id')
|
||||
->references('id')
|
||||
->on($tableNames['roles'])
|
||||
->onDelete('cascade');
|
||||
|
||||
$table->primary(['permission_id', 'role_id']);
|
||||
});
|
||||
|
||||
app('cache')
|
||||
->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null)
|
||||
->forget(config('permission.cache.key'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
$tableNames = config('permission.table_names');
|
||||
|
||||
Schema::drop($tableNames['role_has_permissions']);
|
||||
Schema::drop($tableNames['model_has_roles']);
|
||||
Schema::drop($tableNames['model_has_permissions']);
|
||||
Schema::drop($tableNames['roles']);
|
||||
Schema::drop($tableNames['permissions']);
|
||||
}
|
||||
}
|
||||
+19
-4
@@ -1,7 +1,5 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| API Routes
|
||||
@@ -13,6 +11,23 @@ use Illuminate\Http\Request;
|
||||
|
|
||||
*/
|
||||
|
||||
Route::middleware('auth:api')->get('/user', function (Request $request) {
|
||||
return $request->user();
|
||||
Route::group(['namespace' => 'Api'],function () {
|
||||
|
||||
Route::post('/login', 'Auth\LoginController@login')->name('login');
|
||||
Route::post('/logout', 'Auth\LoginController@logout')->name('logout')->middleware('auth:api');
|
||||
Route::post('/register', 'Auth\RegisterController@register')->name('register');
|
||||
Route::post('/password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
|
||||
Route::post('/password/reset', 'Auth\ResetPasswordController@reset')->name('password.reset');
|
||||
|
||||
});
|
||||
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
Route::get('/user', function (Request $request) {
|
||||
return $request->user();
|
||||
})->middleware('auth:api');
|
||||
|
||||
Route::resource('TestTypes', 'TestTypeController');
|
||||
Route::resource('TestResults', 'TestResultController');
|
||||
Route::resource('MedicalCenters', 'MedicalCenterController');
|
||||
Route::resource('Users', 'UserController');
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Routes Without web/api Middleware
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here is where you can register routes without middleware for your application.
|
||||
| These routes are loaded by the RouteServiceProvider within a group which
|
||||
| contains the "web" middleware group. Now create something great!
|
||||
|
|
||||
*/
|
||||
|
||||
|
||||
Route::post('oauth/token', '\Laravel\Passport\Http\Controllers\AccessTokenController@issueToken')->middleware('throttle');
|
||||
+46
-3
@@ -11,7 +11,50 @@
|
||||
|
|
||||
*/
|
||||
|
||||
Route::get('/', function () {
|
||||
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Laravel Passport Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| If you'd like to use full functionality of laravel passport
|
||||
| use the routes below instead of registering your routes in
|
||||
| AuthServiceProvider as instructed in passport documentation.
|
||||
| This will use "auth:api" guard instead of "auth"
|
||||
|
|
||||
*/
|
||||
Route::get('oauth/authorize', '\Laravel\Passport\Http\Controllers\AuthorizationController@authorize')->middleware('auth:api');
|
||||
Route::delete('oauth/authorize', '\Laravel\Passport\Http\Controllers\DenyAuthorizationController@deny')->middleware('auth:api');
|
||||
Route::post('oauth/authorize', '\Laravel\Passport\Http\Controllers\ApproveAuthorizationController@approve')->middleware('auth:api');
|
||||
|
||||
Route::get('oauth/clients', '\Laravel\Passport\Http\Controllers\ClientController@forUser')->middleware('auth:api');
|
||||
Route::post('oauth/clients', '\Laravel\Passport\Http\Controllers\ClientController@store')->middleware('auth:api');
|
||||
Route::put('oauth/clients/{client_id}', '\Laravel\Passport\Http\Controllers\ClientController@update')->middleware('auth:api');
|
||||
Route::delete('oauth/clients/{client_id}', '\Laravel\Passport\Http\Controllers\ClientController@destroy')->middleware('auth:api');
|
||||
|
||||
Route::post('oauth/personal-access-tokens', '\Laravel\Passport\Http\Controllers\PersonalAccessTokenController@store')->middleware('auth:api');
|
||||
Route::get('oauth/personal-access-tokens', '\Laravel\Passport\Http\Controllers\PersonalAccessTokenController@forUser')->middleware('auth:api');
|
||||
Route::delete('oauth/personal-access-tokens/{token_id}', '\Laravel\Passport\Http\Controllers\PersonalAccessTokenController@destroy')->middleware('auth:api');
|
||||
|
||||
Route::get('oauth/scopes', '\Laravel\Passport\Http\Controllers\ScopeController@all')->middleware('auth:api');
|
||||
Route::post('oauth/token/refresh', '\Laravel\Passport\Http\Controllers\TransientTokenController@refresh')->middleware('auth:api');
|
||||
Route::get('oauth/tokens', '\Laravel\Passport\Http\Controllers\AuthorizedAccessTokenController@forUser')->middleware('auth:api');
|
||||
Route::delete('oauth/tokens/{token_id}', '\Laravel\Passport\Http\Controllers\AuthorizedAccessTokenController@destroy')->middleware('auth:api');
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Vue Router
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Allows vue router to pick up all other URL's.
|
||||
|
|
||||
*/
|
||||
Route::any('{all}', function(){
|
||||
return view('welcome');
|
||||
});
|
||||
Route::redirect('{mskh}', '/');
|
||||
})->where(['all' => '.*']);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user