request Model is added

This commit is contained in:
Abhishek Mali
2025-11-07 12:08:34 +05:30
parent 3c4727acd9
commit 5b764c7597
15 changed files with 466 additions and 141 deletions

View File

@@ -1,41 +1,51 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\Admin;
use Illuminate\Support\Facades\Hash;
use App\Models\Admin;
class AdminAuthController extends Controller
{
// 🟢 Show login form
/**
* Show the admin login page
*/
public function showLoginForm()
{
return view('admin.login');
}
// 🟢 Handle login request
/**
* Handle admin login
*/
public function login(Request $request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required|min:6',
'email' => 'required|email',
'password' => 'required|string|min:6',
]);
$credentials = $request->only('email', 'password');
if (Auth::guard('admin')->attempt($credentials)) {
return redirect()->route('admin.dashboard')->with('success', 'Login successful!');
// Try to log in using the 'admin' guard
if (Auth::guard('admin')->attempt($request->only('email', 'password'))) {
return redirect()->route('admin.dashboard')->with('success', 'Welcome back, Admin!');
}
return back()->withErrors(['email' => 'Invalid credentials.'])->withInput();
return back()->withErrors(['email' => 'Invalid email or password.']);
}
// 🟢 Logout
/**
* Logout admin
*/
public function logout(Request $request)
{
Auth::guard('admin')->logout();
// Destroy the session completely
$request->session()->invalidate();
$request->session()->regenerateToken();

View File

@@ -0,0 +1,68 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
use App\Models\RequestModel as CustomerRequest;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\DB;
class UserRequestController extends Controller
{
// Show all requests
public function index()
{
$requests = CustomerRequest::orderBy('id', 'desc')->get();
return view('admin.requests', compact('requests'));
}
// Approve user request
public function approve($id)
{
$requestData = CustomerRequest::findOrFail($id);
DB::beginTransaction();
try {
// Generate unique Customer ID
$latestUser = User::orderBy('id', 'desc')->first();
$nextId = $latestUser ? $latestUser->id + 1 : 1;
$customerId = 'CID-' . date('Y') . '-' . str_pad($nextId, 6, '0', STR_PAD_LEFT);
// Create user record
$user = new User();
$user->customer_id = $customerId;
$user->customer_name = $requestData->customer_name;
$user->company_name = $requestData->company_name;
$user->designation = $requestData->designation;
$user->email = $requestData->email;
$user->mobile_no = $requestData->mobile_no;
$user->address = $requestData->address;
$user->pincode = $requestData->pincode;
$user->date = now()->format('Y-m-d');
$user->password = Hash::make('123456'); // default password (you can change logic)
$user->save();
// Update request status
$requestData->status = 'approved';
$requestData->save();
DB::commit();
return redirect()->back()->with('success', 'Request approved and user created successfully.');
} catch (\Exception $e) {
DB::rollback();
return redirect()->back()->with('error', 'Something went wrong: ' . $e->getMessage());
}
}
// Reject request
public function reject($id)
{
$requestData = CustomerRequest::findOrFail($id);
$requestData->status = 'rejected';
$requestData->save();
return redirect()->back()->with('info', 'Request rejected successfully.');
}
}

View File

@@ -1,69 +0,0 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use PHPOpenSourceSaver\JWTAuth\Facades\JWTAuth;
use Illuminate\Support\Facades\Auth;
class AuthController extends Controller
{
// ✅ Register
public function register(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|unique:users',
'password' => 'required|string|min:6',
]);
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
$token = JWTAuth::fromUser($user);
return response()->json([
'status' => true,
'message' => 'User registered successfully',
'user' => $user,
'token' => $token
]);
}
// ✅ Login
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (!$token = Auth::guard('api')->attempt($credentials)) {
return response()->json(['error' => 'Invalid credentials'], 401);
}
return response()->json([
'status' => true,
'message' => 'Login successful',
'token' => $token,
'user' => Auth::guard('api')->user()
]);
}
// ✅ Logout
public function logout()
{
Auth::guard('api')->logout();
return response()->json(['message' => 'Successfully logged out']);
}
// ✅ Refresh token
public function refresh()
{
return response()->json([
'token' => Auth::guard('api')->refresh()
]);
}
}

View File

@@ -0,0 +1,56 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\RequestModel;
use Carbon\Carbon;
class RequestController extends Controller
{
/**
* Handle new user signup request (registration request)
*/
public function usersignup(Request $request)
{
// ✅ Validate user input
$request->validate([
'customer_name' => 'required|string|max:255',
'company_name' => 'required|string|max:255',
'designation' => 'nullable|string|max:255',
'email' => 'required|email|unique:requests,email',
'mobile_no' => 'required|string|max:15',
'priority' => 'nullable|string|max:50',
'address' => 'nullable|string',
'pincode' => 'nullable|string|max:10',
]);
// ✅ Generate formatted request ID (e.g., REQ-2025-000001)
$lastRequest = RequestModel::latest('id')->first();
$nextId = $lastRequest ? $lastRequest->id + 1 : 1;
$year = date('Y');
$formattedRequestId = sprintf('REQ-%s-%06d', $year, $nextId);
// ✅ Create new request entry
$newRequest = RequestModel::create([
'request_id' => $formattedRequestId,
'customer_name' => $request->customer_name,
'company_name' => $request->company_name,
'designation' => $request->designation,
'email' => $request->email,
'mobile_no' => $request->mobile_no,
'priority' => $request->priority,
'address' => $request->address,
'pincode' => $request->pincode,
'date' => Carbon::now()->toDateString(), // Auto current date
'status' => 'pending', // Default status
]);
// ✅ Response
return response()->json([
'status' => true,
'message' => 'Signup request submitted successfully. Please wait for admin approval.',
'data' => $newRequest
]);
}
}

View File

@@ -0,0 +1,82 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use PHPOpenSourceSaver\JWTAuth\Facades\JWTAuth;
use App\Models\User;
class UserAuthController extends Controller
{
/**
* User Login
*/
public function login(Request $request)
{
$request->validate([
'login_id' => 'required|string', // can be email, mobile, or customer_id
'password' => 'required|string',
]);
// Find user by email OR mobile_no OR customer_id
$user = User::where('email', $request->login_id)
->orWhere('mobile_no', $request->login_id)
->orWhere('customer_id', $request->login_id)
->first();
if (!$user) {
return response()->json([
'success' => false,
'message' => 'User not found with given credentials.',
], 404);
}
// Check hashed password
if (!Hash::check($request->password, $user->password)) {
return response()->json([
'success' => false,
'message' => 'Incorrect password.',
], 401);
}
// Generate JWT token
$token = JWTAuth::fromUser($user);
return response()->json([
'success' => true,
'message' => 'Login successful.',
'token' => $token,
'user' => [
'id' => $user->id,
'customer_id' => $user->customer_id,
'customer_name' => $user->customer_name,
'company_name' => $user->company_name,
'email' => $user->email,
'mobile_no' => $user->mobile_no,
'address' => $user->address,
'pincode' => $user->pincode,
]
]);
}
/**
* User Logout
*/
public function logout(Request $request)
{
try {
JWTAuth::invalidate(JWTAuth::getToken());
return response()->json([
'success' => true,
'message' => 'Logout successful.',
]);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => 'Failed to logout. Token may be invalid or expired.',
], 500);
}
}
}

29
app/Models/MarkList.php Normal file
View File

@@ -0,0 +1,29 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class MarkList extends Model
{
protected $table = 'mark_lists';
protected $fillable = [
'mark_no', // e.g., MARK-2025-000001
'origin',
'destination',
'customer_name',
'mobile_no',
'customer_id',
'date',
'status',
];
/**
* Relationship: each mark list belongs to a customer (user)
*/
public function customer()
{
return $this->belongsTo(User::class, 'customer_id');
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class RequestModel extends Model
{
protected $table = 'requests';
protected $fillable = [
'request_id', // ✅ custom formatted ID like REQ-2025-000001
'customer_name',
'company_name',
'designation',
'email',
'mobile_no',
'priority',
'address',
'pincode',
'date',
'status',
];
}

View File

@@ -11,17 +11,33 @@ class User extends Authenticatable implements JWTSubject
{
use HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'name',
'customer_id', // CID-2025-000001 format
'customer_name',
'company_name',
'designation',
'email',
'mobile_no',
'address',
'pincode',
'date',
'password',
];
/**
* The attributes that should be hidden for arrays.
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*/
protected function casts(): array
{
return [
@@ -30,12 +46,17 @@ class User extends Authenticatable implements JWTSubject
];
}
// 🔑 Required for JWT
/**
* JWT Identifier.
*/
public function getJWTIdentifier()
{
return $this->getKey();
}
/**
* JWT Custom Claims.
*/
public function getJWTCustomClaims()
{
return [];