search company and id storing test

This commit is contained in:
Asif
2018-05-16 16:23:04 +08:00
184 changed files with 1828 additions and 186 deletions
+9
View File
@@ -9,4 +9,13 @@ class Company extends Model
//
protected $fillable = ['company_profile', 'reg_cert', 'company_name', 'registration_no', 'tax_no', 'tel_no', 'fax', 'address', 'city', 'postcode', 'state', 'country', 'contact_person'];
//protected $guarded = [];
public function Contact()
{
return $this->hasMany(Contact::class);
}
}
+21 -1
View File
@@ -6,5 +6,25 @@ use Illuminate\Database\Eloquent\Model;
class Contact extends Model
{
protected $fillable = ['user_id','company_id'];
protected $fillable = ['company_id'];
public function User()
{
return $this->belongsTo(User::class);
}
public function Company()
{
return $this->belongsTo(Company::class);
}
}
+161 -49
View File
@@ -2,47 +2,133 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use App\UserVerification;
use App\PasswordResets;
use JWTAuth;
use Auth;
use Aloha\Twilio\Twilio;
use Tymon\JWTAuth\Exceptions\JWTException;
use Validator, DB, Hash, Mail, Illuminate\Support\Facades\Password;
use Illuminate\Auth\Passwords\TokenRepositoryInterface;
use Illuminate\Contracts\Hashing\Hasher as HasherContract;
class AuthController extends Controller
{
protected $hasher;
public function __construct(HasherContract $hasher)
{
$this->hasher = $hasher;
}
/**
* API Send verification code
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function sendVerification(Request $request){
$credentials = $request->only('phone');
$rules = [
'phone' => 'required|digits:10|unique:users'
];
$validator = Validator::make($credentials, $rules);
// create user if not exist
$user = User::firstOrNew([
'phone' => $request->phone
]);
$user->save();
// create token if not exist, update if exist
$token = mt_rand(0000,9999);
$user_verification = $user->phoneVerification()->firstOrNew([
'user_id' => $user->id,
]);
$user_verification->token = $token;
$user_verification->save();
// send token to phone
// ** switching to nexmo **
//$message = "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.' ]);
}
/**
* API Verify User
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function verifyUser(Request $request)
{
$credentials = $request->only('phone', 'token');
// check if user already verified
$check_user = User::where('phone', $request->phone)->first();
if(!is_null($check_user)){
if($check_user->is_verified == 1){
return response()->json([
'success'=> true,
'message'=> 'Account already verified.'
]);
}
}
else{
return response()->json([
'success'=> false,
'message'=> 'Please contact support.'
]);
}
// check and verify valid token
$check_token = $check_user->phoneVerification()->where('token', $request->token)->first();
if(!is_null($check_token)){
$check_user->is_verified = 1;
$check_user->save();
$check_token->delete();
if (!$userToken=JWTAuth::fromUser($check_user)) {
return response()->json(['error' => 'invalid_credentials'], 401);
}
// all good so return the token
return response()->json(['success' => true, 'data'=> [ 'token' => $userToken ]]);
}
return response()->json(['success'=> false, 'error'=> "Verification code is invalid."]);
}
/**
* API Register
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function register(Request $request)
public function updateUser(Request $request)
{
$credentials = $request->only('name', 'email', 'password');
$credentials = $request->only('role', 'name', 'password', 'password_confirmation');
$rules = [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users'
'role' => 'required',
'password' => 'required|confirmed|min:6'
];
$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.']);
$user = Auth::user();
$user->update(['name' => $name, 'password' => Hash::make($password)]);
return response()->json(['success'=> true, 'message'=> 'Profile updated.']);
}
/**
* API Login, on success return JWT Auth token
*
@@ -51,10 +137,10 @@ class AuthController extends Controller
*/
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
$credentials = $request->only('phone', 'password');
$rules = [
'email' => 'required|email',
'phone' => 'required|digits:11',
'password' => 'required',
];
$validator = Validator::make($credentials, $rules);
@@ -104,50 +190,76 @@ class AuthController extends Controller
*/
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);
$credentials = $request->only('phone');
$rules = [
'phone'=> 'required',
];
$validator = Validator::make($credentials, $rules);
if($validator->fails()) {
return response()->json(['success'=> false, 'error'=> $validator->messages()]);
}
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);
$user = User::where('phone', $request->phone)->first();
if ($user){
$token = str_random(64);
DB::table(config('auth.passwords.users.table'))->insert([
'phone' => $user->phone,
'token' => $token
]);
return response()->json([
'success' => true, 'data'=> ['message'=> 'A reset link has been send to your mobile phone.']
]);
}
/*
todo
send SMS
*/
return response()->json([
'success' => true, 'data'=> ['message'=> 'A reset email has been sent! Please check your email.']
'success' => false, 'data'=> ['message'=> 'Fail to recover your account.']
]);
}
/**
* API Verify User
* Reset the given user's password.
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function verifyUser($verification_code)
public function reset(Request $request)
{
$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();
$credentials = $request->only('token', 'password', 'password_confirmation');
$rules = [
'token' => 'required',
'password' => 'required|confirmed|min:6'
];
$validator = Validator::make($credentials, $rules);
if($validator->fails()) {
return response()->json(['success'=> false, 'error'=> $validator->messages()]);
}
$token = $request->get('token');
$password = $request->get('password');
$reset = PasswordResets::where('token', $token)->first();
if($reset) {
$user = User::where('phone', '=', $reset->phone)->first();
$user->password = Hash::make($password);
$user->save();
$reset->delete();
return response()->json([
'success'=> true,
'message'=> 'You have successfully verified your email address.'
'success' => false, 'data'=> ['message'=> 'Reset success']
]);
}
return response()->json(['success'=> false, 'error'=> "Verification code is invalid."]);
return response()->json([
'success' => false, 'data'=> ['message'=> 'Invalid token or email or expired code']
]);
}
}
+12 -6
View File
@@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use App\Contact;
use App\Company;
use Illuminate\Http\Request;
class ContactController extends Controller
@@ -43,17 +44,22 @@ class ContactController extends Controller
*/
public function store(Request $request)
{
// get company id from request ex: $request->input('company_id')
// $company_id = $request->input('company_id'))
// get company id from request ex:
//$request->input('company_id');
$company_id = $request->input('company_id');
// query to find company asisng to $company
// $company = Comapny::find($company_id)
$company = Company::find($company_id);
// get user from session $request->user();
// $user = $request->user();
// get user from session
//$request->user();
$user = $request->user();
// prepare query
$contact = new Contact();
$contact->company_id = $company->id;
$contact->user_id = $user->id;
$contact->save();
// insert into database
@@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ForgotPasswordController extends Controller
{
//
}
@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Contact;
use App\Warehouse;
use Illuminate\Http\Request;
@@ -118,5 +119,6 @@ class WarehouseController extends Controller
public function destroy($id)
{
//
}
}
+3 -1
View File
@@ -59,7 +59,9 @@ class Kernel extends HttpKernel
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken',
//'jwt.auth' => \Tymon\JWTAuth\Middleware\GetUserFromToken::class,
'jwt.auth' => \Tymon\JWTAuth\Http\Middleware\Authenticate::class,
'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken',
];
}
+10
View File
@@ -0,0 +1,10 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class PasswordResets extends Model
{
//
}
+10
View File
@@ -0,0 +1,10 @@
<?php
namespace App;
use Laratrust\Models\LaratrustPermission;
class Permission extends LaratrustPermission
{
//
}
+10
View File
@@ -0,0 +1,10 @@
<?php
namespace App;
use Laratrust\Models\LaratrustRole;
class Role extends LaratrustRole
{
//
}
+9
View File
@@ -0,0 +1,9 @@
<?php
namespace App;
use Laratrust\Models\LaratrustTeam;
class Team extends LaratrustTeam
{
}
+16 -1
View File
@@ -5,9 +5,11 @@ namespace App;
use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laratrust\Traits\LaratrustUserTrait;
class User extends Authenticatable implements JWTSubject
{
use LaratrustUserTrait;
use Notifiable;
/**
@@ -16,7 +18,7 @@ class User extends Authenticatable implements JWTSubject
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
'name', 'phone', 'password'
];
/**
@@ -47,4 +49,17 @@ class User extends Authenticatable implements JWTSubject
return [];
}
public function phoneVerification()
{
return $this->hasOne('App\UserVerification', 'user_id');
}
public function Contact()
{
return $this->hasMany(Contact::class);
}
}
+18
View File
@@ -0,0 +1,18 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserVerification extends Model
{
protected $fillable = [
'token'
];
public function user()
{
return $this->belongsTo('App\User', 'user_id');
}
}