merge master

This commit is contained in:
Mohd Arief
2018-05-15 12:35:52 +08:00
321 changed files with 15736 additions and 797 deletions
@@ -2,22 +2,12 @@
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
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;
/**
@@ -29,4 +19,27 @@ class ForgotPasswordController extends Controller
{
$this->middleware('guest');
}
/**
* Get the response for a successful password reset link.
*
* @param string $response
* @return \Illuminate\Http\RedirectResponse
*/
protected function sendResetLinkResponse($response)
{
return ['status' => trans($response)];
}
/**
* Get the response for a failed password reset link.
*
* @param \Illuminate\Http\Request $request
* @param string $response
* @return \Illuminate\Http\RedirectResponse
*/
protected function sendResetLinkFailedResponse(Request $request, $response)
{
return response()->json(['email' => trans($response)], 400);
}
}
+51 -18
View File
@@ -2,31 +2,14 @@
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
@@ -36,4 +19,54 @@ class LoginController extends Controller
{
$this->middleware('guest')->except('logout');
}
/**
* Attempt to log the user into the application.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function attemptLogin(Request $request)
{
$token = $this->guard()->attempt($this->credentials($request));
if ($token) {
$this->guard()->setToken($token);
return true;
}
return false;
}
/**
* Send the response after the user was authenticated.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
protected function sendLoginResponse(Request $request)
{
$this->clearLoginAttempts($request);
$token = (string) $this->guard()->getToken();
$expiration = $this->guard()->getPayload()->get('exp');
return [
'token' => $token,
'token_type' => 'bearer',
'expires_in' => $expiration - time(),
];
}
/**
* Log the user out of the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function logout(Request $request)
{
$this->guard()->logout();
}
}
@@ -0,0 +1,111 @@
<?php
namespace App\Http\Controllers\Auth;
use App\User;
use App\OAuthProvider;
use App\Http\Controllers\Controller;
use App\Exceptions\EmailTakenException;
use Laravel\Socialite\Facades\Socialite;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class OAuthController extends Controller
{
use AuthenticatesUsers;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
config([
'services.github.redirect' => route('oauth.callback', 'github'),
]);
}
/**
* Redirect the user to the provider authentication page.
*
* @param string $provider
* @return \Illuminate\Http\RedirectResponse
*/
public function redirectToProvider($provider)
{
return [
'url' => Socialite::driver($provider)->stateless()->redirect()->getTargetUrl(),
];
}
/**
* Obtain the user information from the provider.
*
* @param string $driver
* @return \Illuminate\Http\Response
*/
public function handleProviderCallback($provider)
{
$user = Socialite::driver($provider)->stateless()->user();
$user = $this->findOrCreateUser($provider, $user);
$this->guard()->setToken(
$token = $this->guard()->login($user)
);
return view('oauth/callback', [
'token' => $token,
'token_type' => 'bearer',
'expires_in' => $this->guard()->getPayload()->get('exp') - time(),
]);
}
/**
* @param string $provider
* @param \Laravel\Socialite\Contracts\User $sUser
* @return \App\User|false
*/
protected function findOrCreateUser($provider, $user)
{
$oauthProvider = OAuthProvider::where('provider', $provider)
->where('provider_user_id', $user->getId())
->first();
if ($oauthProvider) {
$oauthProvider->update([
'access_token' => $user->token,
'refresh_token' => $user->refreshToken,
]);
return $oauthProvider->user;
}
if (User::where('email', $user->getEmail())->exists()) {
throw new EmailTakenException;
}
return $this->createUser($provider, $user);
}
/**
* @param string $provider
* @param \Laravel\Socialite\Contracts\User $sUser
* @return \App\User
*/
protected function createUser($provider, $sUser)
{
$user = User::create([
'name' => $sUser->getName(),
'email' => $sUser->getEmail(),
]);
$user->oauthProviders()->create([
'provider' => $provider,
'provider_user_id' => $sUser->getId(),
'access_token' => $sUser->token,
'refresh_token' => $sUser->refreshToken,
]);
return $user;
}
}
@@ -3,33 +3,16 @@
namespace App\Http\Controllers\Auth;
use App\User;
use App\Role;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
@@ -40,6 +23,18 @@ class RegisterController extends Controller
$this->middleware('guest');
}
/**
* The user has been registered.
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function registered(Request $request, $user)
{
return $user;
}
/**
* Get a validator for an incoming registration request.
*
@@ -49,9 +44,9 @@ 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:6|confirmed',
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);
}
@@ -59,14 +54,19 @@ class RegisterController extends Controller
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
* @return User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
$role = Role::where('name','=','member')->first();
$user = new User();
$user->name = $data['name'];
$user->email = $data['email'];
$user->password = bcrypt($data['password']);
$user->save();
$user->attachRole($role);
return $user;
}
}
@@ -2,31 +2,14 @@
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
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;
/**
* Where to redirect users after resetting their password.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
@@ -36,4 +19,27 @@ class ResetPasswordController extends Controller
{
$this->middleware('guest');
}
/**
* Get the response for a successful password reset.
*
* @param string $response
* @return \Illuminate\Http\RedirectResponse
*/
protected function sendResetResponse($response)
{
return ['status' => trans($response)];
}
/**
* Get the response for a failed password reset.
*
* @param \Illuminate\Http\Request $request
* @param string $response
* @return \Illuminate\Http\RedirectResponse
*/
protected function sendResetFailedResponse(Request $request, $response)
{
return response()->json(['email' => trans($response)], 400);
}
}
-154
View File
@@ -1,154 +0,0 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
use Validator, DB, Hash, Mail, Illuminate\Support\Facades\Password;
class AuthController extends Controller
{
/**
* API Register
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function register(Request $request)
{
$credentials = $request->only('name', 'email', 'password');
$rules = [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users'
];
$validator = Validator::make($credentials, $rules);
if($validator->fails()) {
return response()->json(['success'=> false, 'error'=> $validator->messages()]);
}
$name = $request->name;
$email = $request->email;
$password = $request->password;
$user = User::create(['name' => $name, 'email' => $email, 'password' => Hash::make($password)]);
$verification_code = str_random(30); //Generate verification code
DB::table('user_verifications')->insert(['user_id'=>$user->id,'token'=>$verification_code]);
$subject = "Please verify your email address.";
/* Mail::send('email.verify', ['name' => $name, 'verification_code' => $verification_code],
function($mail) use ($email, $name, $subject){
$mail->from(getenv('FROM_EMAIL_ADDRESS'), "From User/Company Name Goes Here");
$mail->to($email, $name);
$mail->subject($subject);
});
*/
return response()->json(['success'=> true, 'message'=> 'Thanks for signing up! Please check your email to complete your registration.']);
}
/**
* API Login, on success return JWT Auth token
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
$rules = [
'email' => 'required|email',
'password' => 'required',
];
$validator = Validator::make($credentials, $rules);
if($validator->fails()) {
return response()->json(['success'=> false, 'error'=> $validator->messages()]);
}
$credentials['is_verified'] = 1;
try {
// attempt to verify the credentials and create a token for the user
if (! $token = JWTAuth::attempt($credentials)) {
return response()->json(['success' => false, 'error' => 'We cant find an account with this credentials. Please make sure you entered the right information and you have verified your email address.'], 401);
}
} catch (JWTException $e) {
// something went wrong whilst attempting to encode the token
return response()->json(['success' => false, 'error' => 'Failed to login, please try again.'], 500);
}
// all good so return the token
return response()->json(['success' => true, 'data'=> [ 'token' => $token ]]);
}
/**
* Log out
* Invalidate the token, so user cannot use it anymore
* They have to relogin to get a new token
*
* @param Request $request
*/
public function logout(Request $request) {
$this->validate($request, ['token' => 'required']);
try {
JWTAuth::invalidate($request->input('token'));
return response()->json(['success' => true, 'message'=> "You have successfully logged out."]);
} catch (JWTException $e) {
// something went wrong whilst attempting to encode the token
return response()->json(['success' => false, 'error' => 'Failed to logout, please try again.'], 500);
}
}
/**
* API Recover Password
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function recover(Request $request)
{
$user = User::where('email', $request->email)->first();
if (!$user) {
$error_message = "Your email address was not found.";
return response()->json(['success' => false, 'error' => ['email'=> $error_message]], 401);
}
try {
Password::sendResetLink($request->only('email'), function (Message $message) {
$message->subject('Your Password Reset Link');
});
} catch (\Exception $e) {
//Return with error
$error_message = $e->getMessage();
return response()->json(['success' => false, 'error' => $error_message], 401);
}
return response()->json([
'success' => true, 'data'=> ['message'=> 'A reset email has been sent! Please check your email.']
]);
}
/**
* API Verify User
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function verifyUser($verification_code)
{
$check = DB::table('user_verifications')->where('token',$verification_code)->first();
if(!is_null($check)){
$user = User::find($check->user_id);
if($user->is_verified == 1){
return response()->json([
'success'=> true,
'message'=> 'Account already verified..'
]);
}
$user->update(['is_verified' => 1]);
DB::table('user_verifications')->where('token',$verification_code)->delete();
return response()->json([
'success'=> true,
'message'=> 'You have successfully verified your email address.'
]);
}
return response()->json(['success'=> false, 'error'=> "Verification code is invalid."]);
}
}
+19 -2
View File
@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Booking;
use App\Rate;
class BookingController extends Controller
{
@@ -35,8 +36,24 @@ class BookingController extends Controller
*/
public function store(Request $request)
{
$booking = Booking::create($request->all());
return response()->json($booking, 201);
$rates = Rate::find(1);
$term = $request->input('term');
$rate = 1;
switch($term){
case "x1_cash":
$rate = $rates->x1_cash;
break;
default:
$rate = "no";
break;
}
return $rate;
//$booking = Booking::create($request->all());
//return response()->json($booking, 201);
}
/**
@@ -0,0 +1,107 @@
<?php
namespace App\Http\Controllers;
use App\ChinaBankSlip;
use Illuminate\Http\Request;
class ChinaBankSlipController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* 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)
{
// Handle File Upload
if($request->hasFile('china_bank_slips')){
// Get filename with the extension
$filenameWithExt = $request->file('china_bank_slips')->getClientOriginalName();
// Get just filename
$filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
// Get just ext
$extension = $request->file('china_bank_slips')->getClientOriginalExtension();
// Filename to store
$fileNameToStore= $filename.'_'.time().'.'.$extension;
// Upload Image
$path = $request->file('china_bank_slips')->storeAs('public/bankslip', $fileNameToStore);
} else {
$fileNameToStore = 'hello.jpg';
}
// Create Post
$post = new ChinaBankSlip;
$post->actual_transfer_amount = $request->input('actual_transfer_amount');
$post->date = $request->input('date');
$post->details = $request->input('details');
$post->china_bank_slips = $fileNameToStore;
$post->save();;
}
/**
* Display the specified resource.
*
* @param \App\ChinaBankSlip $chinaBankSlip
* @return \Illuminate\Http\Response
*/
public function show(ChinaBankSlip $chinaBankSlip)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\ChinaBankSlip $chinaBankSlip
* @return \Illuminate\Http\Response
*/
public function edit(ChinaBankSlip $chinaBankSlip)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\ChinaBankSlip $chinaBankSlip
* @return \Illuminate\Http\Response
*/
public function update(Request $request, ChinaBankSlip $chinaBankSlip)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\ChinaBankSlip $chinaBankSlip
* @return \Illuminate\Http\Response
*/
public function destroy(ChinaBankSlip $chinaBankSlip)
{
//
}
}
+40
View File
@@ -0,0 +1,40 @@
<?php
namespace App\Http\Controllers;
use App\Rate;
use Illuminate\Http\Request;
class RateController extends Controller
{
public function index()
{
return Rate::all();
}
public function show(Rate $rate)
{
return $rate;
}
public function store(Request $request)
{
$rate = Rate::create($request->all());
return response()->json($rate, 201);
}
public function update(Request $request, Rate $rate)
{
$rate->update($request->all());
return response()->json($rate, 200);
}
public function delete(Rate $rate)
{
$rate->delete();
return response()->json(null, 204);
}
}
@@ -0,0 +1,40 @@
<?php
namespace App\Http\Controllers;
use App\SettingBeneficiary;
use Illuminate\Http\Request;
class SettingBeneficiaryController extends Controller
{
public function index()
{
return SettingBeneficiary::all();
}
public function show(SettingBeneficiary $beneficiary)
{
return $beneficiary;
}
public function store(Request $request)
{
$beneficiary = SettingBeneficiary::create($request->all());
return response()->json($beneficiary, 201);
}
public function update(Request $request, SettingBeneficiary $beneficiary)
{
$beneficiary->update($request->all());
return response()->json($beneficiary, 200);
}
public function delete(SettingBeneficiary $beneficiary)
{
$beneficiary->delete();
return response()->json(null, 204);
}
}
@@ -0,0 +1,40 @@
<?php
namespace App\Http\Controllers;
use App\SettingCredit;
use Illuminate\Http\Request;
class SettingCreditController extends Controller
{
public function index()
{
return SettingCredit::all();
}
public function show(SettingCredit $credit)
{
return $credit;
}
public function store(Request $request)
{
$credit = SettingCredit::create($request->all());
return response()->json($credit, 201);
}
public function update(Request $request, SettingCredit $credit)
{
$credit->update($request->all());
return response()->json($credit, 200);
}
public function delete(SettingCredit $credit)
{
$credit->delete();
return response()->json(null, 204);
}
}
@@ -0,0 +1,40 @@
<?php
namespace App\Http\Controllers;
use App\SettingSupplier;
use Illuminate\Http\Request;
class SettingSupplierController extends Controller
{
public function index()
{
return SettingSupplier::all();
}
public function show(SettingSupplier $supplier)
{
return $supplier;
}
public function store(Request $request)
{
$supplier = SettingSupplier::create($request->all());
return response()->json($supplier, 201);
}
public function update(Request $request, SettingSupplier $supplier)
{
$supplier->update($request->all());
return response()->json($supplier, 200);
}
public function delete(SettingSupplier $supplier)
{
$supplier->delete();
return response()->json(null, 204);
}
}
@@ -0,0 +1,26 @@
<?php
namespace App\Http\Controllers\Settings;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class PasswordController extends Controller
{
/**
* Update the user's password.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function update(Request $request)
{
$this->validate($request, [
'password' => 'required|confirmed|min:6',
]);
$request->user()->update([
'password' => bcrypt($request->password),
]);
}
}
@@ -0,0 +1,27 @@
<?php
namespace App\Http\Controllers\Settings;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class ProfileController extends Controller
{
/**
* Update the user's profile information.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function update(Request $request)
{
$user = $request->user();
$this->validate($request, [
'name' => 'required',
'email' => 'required|email|unique:users,email,'.$user->id,
]);
return tap($user)->update($request->only('name', 'email'));
}
}