Come BackEnd

This commit is contained in:
saeid_01
2019-04-18 20:18:13 +04:30
parent dfbefad4a4
commit 03a135305b
61 changed files with 3266 additions and 58 deletions
@@ -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);
}
}
+121
View File
@@ -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];
}
}
}
+21
View File
@@ -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);
}
}
+99 -14
View File
@@ -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)
{
//
}
}
+28
View File
@@ -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)
{
//
}
}
+126
View File
@@ -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)
{
//
}
}
+54
View File
@@ -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();//?????????????????
}
}
+1
View File
@@ -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,
];
/**
+30
View File
@@ -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);
}
}
+1 -1
View File
@@ -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;
}
}
}
+53
View File
@@ -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;
}
}
}
+26
View File
@@ -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');
}
}
+17
View File
@@ -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');
}
}
+14
View File
@@ -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');
}
}
+14
View File
@@ -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');
}
}
+29
View File
@@ -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;
}
}
+29
View File
@@ -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;
}
}
+28
View File
@@ -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;
}
}
+5 -2
View File
@@ -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();
}
}
+28
View File
@@ -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];
}
}
+16
View File
@@ -35,6 +35,9 @@ class RouteServiceProvider extends ServiceProvider
*/
public function map()
{
$this->mapRoutes();
$this->mapApiRoutes();
$this->mapWebRoutes();
@@ -70,4 +73,17 @@ class RouteServiceProvider extends ServiceProvider
->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'));
}
}
+21
View File
@@ -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');
}
}
+22
View File
@@ -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');
}
}
+12
View File
@@ -0,0 +1,12 @@
<?php
namespace App\Transformers;
class Json
{
public static function response($data = null, $message = null)
{
return [
'data' => $data,
'message' => $message,
];
}
}
+18
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+3
View File
@@ -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
View File
@@ -42,9 +42,8 @@ return [
],
'api' => [
'driver' => 'token',
'driver' => 'passport',
'provider' => 'users',
'hash' => false,
],
],
+1 -1
View File
@@ -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'),
];
-3
View File
@@ -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' => [
+129
View File
@@ -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',
],
];
+4
View File
@@ -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
View File
@@ -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
View File
@@ -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');
+15
View File
@@ -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
View File
@@ -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' => '.*']);