/home2/mshostin/crm.ms-hostingladz.com/app/Http/Controllers/AuthController.php
<?php
namespace App\Http\Controllers;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\User;
use App\Models\Customer;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
//
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'phone' => ['required', 'string'],
'address' => ['required', 'string'],
'customer_number' => ['required', 'string', 'max:255', 'unique:customers,customer_id,' . $data['customer_number'] . ',id'],
// 'role' => ['required', 'numeric', 'In:4'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
public function login(Request $request)
{
$validator = Validator::make($request->all(), [
'email' => 'required|email',
'password' => 'required|string|min:6',
]);
$exist_user = User::where('email',$request->email)->where('status',0)->where('delete_status',1)->first();
if($exist_user != null)
{
return response()->json(['error' => 'Unauthorized'], 401);
}
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
if (!$token = auth('api')->attempt($validator->validated())) {
return response()->json(['error' => 'Unauthorized'], 401);
}
// dd($token);
return $this->createNewToken($token);
}
public function logout()
{
auth('api')->logout();
return response()->json(['message' => 'User successfully signed out']);
}
public function refresh()
{
return $this->createNewToken(auth('api')->refresh());
}
/**
* Get the authenticated User.
*
* @return \Illuminate\Http\JsonResponse
*/
public function userProfile()
{
return response()->json(auth('api')->user());
}
/**
* Get the token array structure.
*
* @param string $token
*
* @return \Illuminate\Http\JsonResponse
*/
protected function createNewToken($token)
{
$user = User::with('agent')->find(auth('api')->user()->id);
return response()->json([
'access_token' => $token,
'token_type' => 'bearer',
'expires_in' => auth('api')->factory()->getTTL() * 999999,
'user' => $user
]);
}
public function customer_register(Request $request)
{
try {
$exist_user = User::where('email',$request->email)->where('status',0)->where('delete_status',1)->first();
if($exist_user != null)
{
$exist_user->delete_status = 0;
$exist_user->save();
$customer = Customer::where('user_id',$exist_user->id)->first();
if($customer == null)
{
$customer = new Customer();
}
$customer->customer_id = $request->customer_number;
$customer->customer_name = $request->name;
$customer->phone = $request->phone;
$customer->address = $request->address;
$customer->save();
return response()->json(['success' => 'Record created successfully.']);
}
$valid = $this->validator($request->all());
if ($valid->validate())
{
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'role' => 5,
'password' => Hash::make($request->password),
]);
$user->role = 5;
$user->save();
$customer = new Customer();
$customer->customer_id = $request->customer_number;
$customer->user_id = $user->id;
$customer->customer_name = $request->name;
$customer->phone = $request->phone;
$customer->address = $request->address;
$customer->save();
return response()->json(['success' => 'Record created successfully.']);
} else {
return response()->json(['error' => $valid->errors()], 422);
}
} catch (Exception $exception) {
return response()->json(['error' => $exception->getMessage()], 500);
}
}
public function customer_profile()
{
try {
if(auth('api')->user())
{
$user = User::with('customer')->find(auth('api')->user()->id);
return $user;
}
else
{
return response()->json(['error' => 'UnAuthenticate...'], 401);
}
} catch (Exception $e) {
return response()->json(['error' => $e->getMessage()], 500);
}
}
public function delete_user()
{
if(auth('api')->user())
{
$id = auth('api')->user()->id;
$user = User::find($id);
$user->status = 0;
$user->delete_status = 1;
$user->save();
$this->logout();
return response()->json(['message' => 'User successfully deleted...']);
}
else
{
return response()->json(['error' => 'user should be logged in to delete user...'], 500);
}
}
}