Merge branch 'master' of gitlab.com:CIEFWorldwideSdnBhd/izyim-api into zain/shipping-order

# Conflicts:
#	Dockerfile
#	app/Http/Controllers/AuthController.php
#	app/User.php
#	database/factories/UserFactory.php
#	database/migrations/2018_04_25_084609_change_email_to_mobile_from_user.php
#	database/seeds/DatabaseSeeder.php
#	public/home.html
#	public/index.html
#	public/profile-first-setup.html
#	public/verify-code-number.html
#	public/verify-phone-number.html
#	routes/api.php
#	routes/web.php
#	tests/Feature/LoginTest.php
#	tests/Feature/RegisterTest.php
This commit is contained in:
Jack Goh
2018-06-28 16:58:01 +08:00
49 changed files with 15458 additions and 263 deletions
+28 -14
View File
@@ -7,6 +7,7 @@ use App\PasswordResets;
use JWTAuth;
use Auth;
use App\Role;
use App\Company;
use Aloha\Twilio\Twilio;
use Tymon\JWTAuth\Exceptions\JWTException;
@@ -30,10 +31,14 @@ class AuthController extends Controller
public function sendVerification(Request $request){
$credentials = $request->only('phone');
$rules = [
'phone' => 'required|digits:10|unique:users'
'phone' => 'required|digits_between:10,11|unique:users'
];
$validator = Validator::make($credentials, $rules);
if($validator->fails()){
return response()->json(['success'=> false, 'message'=> 'The minimum length should be 10.' ], 400);
}
// create user if not exist
$user = User::firstOrNew([
'phone' => $request->phone
@@ -41,24 +46,24 @@ class AuthController extends Controller
$user->save();
// create token if not exist, update if exist
$token = mt_rand(0000,9999);
$token = mt_rand(0000,9999);
// for testing
// for testing
if($request->phone == '0123456789'){
$token = "1234";
}
$user_verification = $user->phoneVerification()->firstOrNew([
'user_id' => $user->id,
]);
$user_verification->token = $token;
$user_verification->save();
// TODO: send token to phone
// TODO: send token to phone
//$message = "RM0.00 IZYIM: Verification code : ". $token;
//$twilio = new Twilio(env('TWILIO_ACC'), env('TWILIO_TOKEN'), env('TWILIO_NUMBER'));
//$twilio->message($request->phone, $message);
return response()->json(['success'=> true, 'message'=> 'A verification code has been send to your mobile number.' ]);
return response()->json(['success'=> true, 'message'=> 'A verification code has been send to your mobile number.' ], 200);
}
@@ -79,14 +84,14 @@ class AuthController extends Controller
return response()->json([
'success'=> true,
'message'=> 'Account already verified.'
]);
], 200);
}
}
else{
return response()->json([
'success'=> false,
'message'=> 'Please contact support.'
]);
], 400);
}
// check and verify valid token
@@ -99,14 +104,17 @@ class AuthController extends Controller
if (!$userToken=JWTAuth::fromUser($check_user)) {
return response()->json(['error' => 'invalid_credentials'], 401);
}
// TODO : Create company for user
$expiration = JWTAuth::setToken($userToken)->getPayload()->get('exp');
// all good so return the token
return response()->json(['success' => true, 'token' => $userToken,
'token_type' => 'bearer',
'expires_in' => $expiration - time()]);
}
return response()->json(['success'=> false, 'error'=> "Verification code is invalid."]);
return response()->json(['success'=> false, 'error'=> "Verification code is invalid."], 400);
}
/**
@@ -127,9 +135,8 @@ class AuthController extends Controller
$validator = Validator::make($credentials, $rules);
if($validator->fails()) {
return response()->json(['success'=> false, 'error'=> $validator->messages()]);
return response()->json(['success'=> false, 'error'=> $validator->messages()], 400);
}
$name = $request->name;
$password = $request->password;
$role = $request->role;
@@ -142,7 +149,14 @@ class AuthController extends Controller
// attach role to user
$user->attachRole($role);
$user->update(['name' => $name, 'password' => Hash::make($password)]);
return response()->json(['success'=> true, 'message'=> 'Profile updated.']);
// TODO : create company for user
$company = new Company;
$company->user_id = $user->id;
$company->save();
return response()->json(['success'=> true, 'message'=> 'Profile updated.'], 200);
}
@@ -170,7 +184,7 @@ class AuthController extends Controller
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);
return response()->json(['success' => false, 'error' => 'Phone or password incorrect'], 401);
}
} catch (JWTException $e) {
// something went wrong whilst attempting to encode the token
+126
View File
@@ -0,0 +1,126 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Company;
use Illuminate\Support\Facades\Storage;
use Validator;
use Auth;
class CompanyController extends Controller
{
public function update(Request $request)
{
$company = Company::where("user_id", Auth::user()->id)->first();
if (!$company)
{
return response()->json(['success'=> false, 'message'=>'Company not found'], 404);
}
$rules = [
'company_name' => 'required',
'registration_no' => 'required',
'tax_no' => 'required',
'tax_no' => 'required',
'tel_no' => 'required',
'fax' => 'required',
'address' => 'required',
'city' => 'required',
'postcode' => 'required',
'state' => 'required',
'country' => 'required',
'contact_person' => 'required'
];
$validator = Validator::make($request->all(), $rules);
if($validator->fails()) {
return response()->json(['success'=> false, 'error'=> 'All the fields are required'], 400);
//return response()->json(['success'=> false, 'error'=> $validator->messages()], 400);
}
$company->company_name=$request->input('company_name');
$company->registration_no=$request->input('registration_no');
$company->tax_no=$request->input('tax_no');
$company->tel_no=$request->input('tel_no');
$company->fax=$request->input('fax');
$company->address=$request->input('address');
$company->city=$request->input('city');
$company->postcode=$request->input('postcode');
$company->state=$request->input('state');
$company->country=$request->input('country');
$company->contact_person=$request->input('contact_person');
$company->save();
return response()->json(['success'=> true, 'message'=>'Company created successfully'],200);
}
public function companyProfile(Request $request)
{
$company = Company::where("user_id", Auth::user()->id)->first();
if (!$company)
{
return response()->json(['success'=> false, 'error'=>'Company not found'], 404);
}
//validaating file types
$validator = Validator::make($request->all(), [
'company_profile' => 'image|mimes:jpg,jpeg,bmp,png'
]);
if($validator->fails())
{
return response()->json(['success'=> false, 'error'=>'Incorrect format'], 400);
}
if($file = $request->file('company_profile')) //company profile picture
{
$company_profile = $request->file('company_profile');
$filename = $company_profile->getClientOriginalName(); //get the original file name
$unique_name = 'comp_prof_' . md5($filename. time()); //generating a random file name
$file = $request->file('company_profile');
$ext = $file->getClientOriginalExtension();
$input['company_profile'] = $filename;
Storage::putFileAs(
'company_profile',/*folder name*/ $file, $unique_name. '.' .$ext
);
$company->company_profile = $unique_name. '.' .$ext; //update database
} //end if
$company->save();
return response()->json(['success'=> true, 'message'=>'Company profile picture uploaded successfully'],200);
}//end of companyProfile()
public function regCert(Request $request)
{
$company = Company::where("user_id", Auth::user()->id)->first();
if (!$company)
{
return response()->json(['success'=> false, 'error'=>'Company not found'], 404);
}
//validating file types
$validator = Validator::make($request->all(), [
'reg_cert' => 'mimes:jpg,jpeg,bmp,png,gif,svg,pdf'
]);
if($validator->fails()){
return response()->json(['success'=> false, 'error'=>'Incorrect format'], 400);
}
if($request->hasFile('reg_cert')) //Registration Certificate upload
{
$reg_cert = $request->file('reg_cert');
$filename = $reg_cert->getClientOriginalName(); //original filename
$unique_name = 'reg_cert_' . md5($filename. time()); //generating a random file name
$file = $request->file('reg_cert');
$ext = $file->getClientOriginalExtension();
$input['reg_cert'] = $filename;
Storage::putFileAs(
'reg_cert',/*folder name*/ $file, $unique_name. '.' .$ext
);
$company->reg_cert = $unique_name. '.' .$ext; //this updates database
}//end if
$company->save();
return response()->json(['success'=> true, 'message'=>'Registration Certificate uploaded successfully'], 200);
}//end regCert()
}//end of class
@@ -0,0 +1,106 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Deliveryinfo;
use Auth;
class DeliveryinfoController extends Controller
{
public function index()
{
$deliveryinfo = Deliveryinfo::where('com_id', Auth::user()->company())->get();
return response()->json($deliveryinfo, 200);
}
/**
* Display the specified delivery-info.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show(Deliveryinfo $id)
{
$deliveryinfo = Deliveryinfo::where('com_id', Auth::user()->company())->where('id', $id)->firstOrFail();
return response()->json($deliveryinfo, 200);
}
/**
* Store a newly delivery-info in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$user = Auth::user();
$deliveryinfo = new Deliveryinfo;
$deliveryinfo->branch = $request->input('branch');
$deliveryinfo->deli_info = $request->input('deli_info');
$deliveryinfo->address = $request->input('address');
$deliveryinfo->city = $request->input('city');
$deliveryinfo->postcode = $request->input('postcode');
$deliveryinfo->state = $request->input('state');
$deliveryinfo->country = $request->input('country');
$deliveryinfo->contact_person = $request->input('contact_person');
$deliveryinfo->contact_person_no = $request->input('contact_person_no');
$deliveryinfo->com_id = $user->company();
$deliveryinfo->save();
return response()->json(['deliveryinfo'=>$deliveryinfo],201);
}
/**
* Update the delivery-info.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$deliveryinfo = Deliveryinfo::where('com_id', Auth::user()->company())->where('id', $id)->firstOrFail();
if (!$deliveryinfo)
{
return response()->json(['message'=>'Access Denied!'], 404);
}
$deliveryinfo->branch = $request->input('branch');
$deliveryinfo->deli_info = $request->input('deli_info');
$deliveryinfo->address = $request->input('address');
$deliveryinfo->city = $request->input('city');
$deliveryinfo->postcode = $request->input('postcode');
$deliveryinfo->state = $request->input('state');
$deliveryinfo->country = $request->input('country');
$deliveryinfo->contact_person = $request->input('contact_person');
$deliveryinfo->contact_person_no = $request->input('contact_person_no');
$deliveryinfo->com_id = $user->company();
$deliveryinfo->save();
return response()->json(['deliveryinfo'=>$deliveryinfo],200);
}
/**
* Remove the delivery-info.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy(Deliveryinfo $id)
{
$deliveryinfo = Deliveryinfo::where('com_id', Auth::user()->company())->where('id', $id)->firstOrFail();
if (!$deliveryinfo)
{
return response()->json(['message'=>'Access Denied!'], 404);
}
$deliveryinfo->delete($id);
return response()->json($deliveryinfo, 204);
}
}