fix7/9
This commit is contained in:
parent
5568997226
commit
3350b90866
|
|
@ -0,0 +1,44 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use App\Models\StudentPortalLog ;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class StudentPortalController extends Controller
|
||||||
|
{
|
||||||
|
public function studentlogin(Request $request)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'username' => 'required',
|
||||||
|
'password' => 'required',
|
||||||
|
'pin' => 'required|numeric',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$student = DB::table('student_portal_logs')
|
||||||
|
->where('email', $request->username)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
// 1. Hash::check පාවිච්චි කරලා password එක check කරන්න
|
||||||
|
if ($student && Hash::check($request->password, $student->password) && $student->pin == $request->pin) {
|
||||||
|
|
||||||
|
// 2. Status එක active හෝ හිස් ("") වුණොත් ඇතුලට යන්න දෙන්න
|
||||||
|
if ($student->status !== 'active' && $student->status !== '') {
|
||||||
|
return redirect('/')->with('error', 'Your account is inactive!');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Session එකට ID එක දානවා
|
||||||
|
$request->session()->put('student_id', $student->studentid);
|
||||||
|
|
||||||
|
// කෙලින්ම Student Portal එකට redirect කරනවා
|
||||||
|
return redirect()->route('student.portal')->with('success', 'Logged in successfully!');
|
||||||
|
}
|
||||||
|
|
||||||
|
// දත්ත වැරදියි නම් හෝම් පේජ් එකට යවනවා
|
||||||
|
return redirect('/')->with('error', 'Invalid Email, Password, or PIN!');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class StudentPortalLog extends Model
|
||||||
|
{
|
||||||
|
protected $table = 'student_portal_logs';
|
||||||
|
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'email',
|
||||||
|
'studentid',
|
||||||
|
'password',
|
||||||
|
'pin',
|
||||||
|
'status',
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
protected $hidden = [
|
||||||
|
'password',
|
||||||
|
'pin',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('student_portal_logs', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('email');
|
||||||
|
$table->string('studentid');
|
||||||
|
$table->string('password');
|
||||||
|
$table->integer('pin');
|
||||||
|
$table->string('status');
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('student_portal_logs');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,283 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Student Services - LMS Dashboard</title>
|
||||||
|
|
||||||
|
<!-- Google Fonts (Segoe UI style clean font එකක් සඳහා) -->
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- FontAwesome Icons (Card ඇතුලේ තියෙන icons සඳහා) -->
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
<style>
|
||||||
|
:root{
|
||||||
|
--primary:#5E244E;
|
||||||
|
--secondary:#8B3A74;
|
||||||
|
--light:#f8f4f7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero{
|
||||||
|
background:linear-gradient(rgba(0,0,0,.65),rgba(0,0,0,.65)),
|
||||||
|
url('https://images.pexels.com/photos/3802510/pexels-photo-3802510.jpeg');
|
||||||
|
background-size:cover;
|
||||||
|
background-position:center;
|
||||||
|
color:#fff;
|
||||||
|
padding:80px 0;
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.portal-card{
|
||||||
|
border:none;
|
||||||
|
border-radius:15px;
|
||||||
|
transition:.3s;
|
||||||
|
box-shadow:0 5px 20px rgba(0,0,0,.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
.portal-card:hover{
|
||||||
|
transform:translateY(-8px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.portal-icon{
|
||||||
|
width:70px;
|
||||||
|
height:70px;
|
||||||
|
background:#5E244E;
|
||||||
|
color:#fff;
|
||||||
|
border-radius:50%;
|
||||||
|
display:flex;
|
||||||
|
align-items:center;
|
||||||
|
justify-content:center;
|
||||||
|
font-size:28px;
|
||||||
|
margin:auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-portal{
|
||||||
|
background:#5E244E;
|
||||||
|
color:#fff;
|
||||||
|
padding:10px 30px;
|
||||||
|
border: none;
|
||||||
|
transition: 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-portal:hover{
|
||||||
|
background:#8B3A74;
|
||||||
|
color:#fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.modal-content {
|
||||||
|
border: none;
|
||||||
|
border-radius: 16px;
|
||||||
|
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-header {
|
||||||
|
background: transparent;
|
||||||
|
border-bottom: none;
|
||||||
|
padding: 25px 25px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
color: var(--primary);
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 1.35rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-body {
|
||||||
|
padding: 10px 25px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.input-group-text {
|
||||||
|
background-color: #f8fafc;
|
||||||
|
border-color: #cbd5e1;
|
||||||
|
color: #64748b;
|
||||||
|
border-top-left-radius: 8px;
|
||||||
|
border-bottom-left-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-label {
|
||||||
|
color: #475569;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
border: 1px solid #cbd5e1;
|
||||||
|
padding: 0.65rem 0.75rem;
|
||||||
|
font-size: 0.95rem;
|
||||||
|
border-top-right-radius: 8px;
|
||||||
|
border-bottom-right-radius: 8px;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control:focus {
|
||||||
|
border-color: var(--secondary);
|
||||||
|
box-shadow: 0 0 0 4px rgba(139, 58, 116, 0.12);
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.input-group:focus-within .input-group-text {
|
||||||
|
border-color: var(--secondary);
|
||||||
|
color: var(--secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-footer {
|
||||||
|
background: transparent;
|
||||||
|
border-top: none;
|
||||||
|
padding: 0 25px 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.btn-modal-cancel {
|
||||||
|
background: transparent;
|
||||||
|
border: 1.5px solid #cbd5e1;
|
||||||
|
color: #64748b;
|
||||||
|
font-weight: 600;
|
||||||
|
padding: 10px 0;
|
||||||
|
transition: all 0.2s;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-modal-cancel:hover {
|
||||||
|
background: #f1f5f9;
|
||||||
|
color: #334155;
|
||||||
|
border-color: #94a3b8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-modal-login {
|
||||||
|
background: var(--primary);
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
font-weight: 600;
|
||||||
|
padding: 10px 0;
|
||||||
|
box-shadow: 0 4px 12px rgba(94, 36, 78, 0.2);
|
||||||
|
transition: all 0.2s;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-modal-login:hover {
|
||||||
|
background: var(--secondary);
|
||||||
|
color: #fff;
|
||||||
|
transform: translateY(-1px);
|
||||||
|
box-shadow: 0 6px 15px rgba(94, 36, 78, 0.3);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<section class="hero">
|
||||||
|
<div class="container">
|
||||||
|
<h1 class="fw-bold">Student Portal</h1>
|
||||||
|
<p class="mt-3">
|
||||||
|
Access your courses, timetable, assignments, examination results,
|
||||||
|
payments and profile from one place.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<button onclick="studentlogin()" class="btn btn-portal mt-3">
|
||||||
|
Student Login
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="py-5">
|
||||||
|
<div class="container">
|
||||||
|
<div class="text-center mb-5">
|
||||||
|
<h2>Student Services</h2>
|
||||||
|
<p class="text-muted">
|
||||||
|
Everything you need during your academic journey.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row g-4">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card portal-card h-100 text-center p-4">
|
||||||
|
<div class="portal-icon">
|
||||||
|
<i class="fa-solid fa-book"></i>
|
||||||
|
</div>
|
||||||
|
<h4 class="mt-4">My Courses</h4>
|
||||||
|
<p class="text-muted">View enrolled courses and learning materials.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card portal-card h-100 text-center p-4">
|
||||||
|
<div class="portal-icon">
|
||||||
|
<i class="fa-solid fa-calendar-days"></i>
|
||||||
|
</div>
|
||||||
|
<h4 class="mt-4">Class Timetable</h4>
|
||||||
|
<p class="text-muted">Check your weekly lecture schedule.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card portal-card h-100 text-center p-4">
|
||||||
|
<div class="portal-icon">
|
||||||
|
<i class="fa-solid fa-file-lines"></i>
|
||||||
|
</div>
|
||||||
|
<h4 class="mt-4">Assignments</h4>
|
||||||
|
<p class="text-muted">Submit assignments and download resources.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card portal-card h-100 text-center p-4">
|
||||||
|
<div class="portal-icon">
|
||||||
|
<i class="fa-solid fa-square-poll-vertical"></i>
|
||||||
|
</div>
|
||||||
|
<h4 class="mt-4">Exam Results</h4>
|
||||||
|
<p class="text-muted">View semester and final examination results.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card portal-card h-100 text-center p-4">
|
||||||
|
<div class="portal-icon">
|
||||||
|
<i class="fa-solid fa-credit-card"></i>
|
||||||
|
</div>
|
||||||
|
<h4 class="mt-4">Fee Payments</h4>
|
||||||
|
<p class="text-muted">Pay course fees and download payment receipts.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card portal-card h-100 text-center p-4">
|
||||||
|
<div class="portal-icon">
|
||||||
|
<i class="fa-solid fa-user"></i>
|
||||||
|
</div>
|
||||||
|
<h4 class="mt-4">Student Profile</h4>
|
||||||
|
<p class="text-muted">Update your personal information securely.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="py-5 bg-light">
|
||||||
|
<div class="container">
|
||||||
|
<div class="text-center mb-5">
|
||||||
|
<h2>Quick Links</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row text-center">
|
||||||
|
<div class="col-md-3 mb-3">
|
||||||
|
<a href="#" class="btn btn-outline-dark w-100">Academic Calendar</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3 mb-3">
|
||||||
|
<a href="#" class="btn btn-outline-dark w-100">Student Handbook</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3 mb-3">
|
||||||
|
<a href="#" class="btn btn-outline-dark w-100">Examination Notices</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3 mb-3">
|
||||||
|
<a href="#" class="btn btn-outline-dark w-100">Contact Support</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -71,7 +71,6 @@
|
||||||
background: var(--secondary);
|
background: var(--secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- Udemy Style Course Card --- */
|
|
||||||
.course-card {
|
.course-card {
|
||||||
border: 1px solid var(--card-border);
|
border: 1px solid var(--card-border);
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
|
|
@ -79,6 +78,7 @@
|
||||||
background: #fff;
|
background: #fff;
|
||||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
|
scale: .99;
|
||||||
}
|
}
|
||||||
|
|
||||||
.course-card:hover {
|
.course-card:hover {
|
||||||
|
|
@ -87,18 +87,18 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.course-image-wrapper {
|
.course-image-wrapper {
|
||||||
padding: 16px 16px 0 16px;
|
padding: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.course-card img {
|
.course-card img {
|
||||||
height: 190px;
|
height: 200px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
border-radius: 14px;
|
border-radius: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.course-card .card-body {
|
.course-card .card-body {
|
||||||
padding: 20px 24px 24px 24px;
|
padding: 24px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
@ -108,29 +108,19 @@
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
line-height: 1.3;
|
line-height: 1.3;
|
||||||
color: #1c1d1f;
|
color: #1c1d1f;
|
||||||
margin-bottom: 6px;
|
margin-bottom: 8px;
|
||||||
display: -webkit-box;
|
|
||||||
-webkit-line-clamp: 2;
|
|
||||||
-webkit-box-orient: vertical;
|
|
||||||
overflow: hidden;
|
|
||||||
height: 55px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.course-author {
|
.course-author {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: var(--text-muted);
|
color: var(--text-muted);
|
||||||
margin-bottom: 8px;
|
margin-bottom: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.course-short-desc {
|
.course-short-desc {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: #4f5357;
|
color: #4f5357;
|
||||||
margin-bottom: 12px;
|
margin-bottom: 16px;
|
||||||
display: -webkit-box;
|
|
||||||
-webkit-line-clamp: 2;
|
|
||||||
-webkit-box-orient: vertical;
|
|
||||||
overflow: hidden;
|
|
||||||
height: 42px;
|
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -171,7 +161,7 @@
|
||||||
gap: 15px;
|
gap: 15px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
color: var(--success-green);
|
color: var(--success-green);
|
||||||
margin-bottom: 18px;
|
margin-bottom: 20px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -369,33 +359,42 @@ $courses=[
|
||||||
|
|
||||||
<div class="row g-4" id="courseContainer">
|
<div class="row g-4" id="courseContainer">
|
||||||
@foreach($courses as $course)
|
@foreach($courses as $course)
|
||||||
<div class="col-lg-4 col-md-6 course-item">
|
<div class="col-12 course-item">
|
||||||
<div class="card course-card h-100">
|
<div class="card course-card h-100">
|
||||||
<div class="course-image-wrapper">
|
<div class="row g-0 align-items-center">
|
||||||
<img src="{{ $course['image'] }}" alt="{{ $course['title'] }}">
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
|
||||||
<h4 class="course-title">{{ $course['title'] }}</h4>
|
|
||||||
<div class="course-author">{{ $course['author'] }}</div>
|
|
||||||
|
|
||||||
<p class="course-short-desc">{{ $course['desc'] }}</p>
|
<div class="col-md-4">
|
||||||
|
<div class="course-image-wrapper">
|
||||||
<div class="course-meta-row">
|
<img src="{{ $course['image'] }}" alt="{{ $course['title'] }}">
|
||||||
<span class="badge-bestseller">{{ $course['badge'] }}</span>
|
</div>
|
||||||
<span class="rating-star">
|
|
||||||
<i class="fas fa-star"></i> {{ $course['rating'] }}
|
|
||||||
</span>
|
|
||||||
<span class="rating-count">({{ $course['students'] }})</span>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="course-features">
|
<div class="col-md-8">
|
||||||
<span><i class="fas fa-tools"></i> Practical Labs</span>
|
<div class="card-body">
|
||||||
<span><i class="fas fa-certificate"></i> Verified ({{ $course['duration'] }})</span>
|
<h4 class="course-title">{{ $course['title'] }}</h4>
|
||||||
|
<div class="course-author">{{ $course['author'] }}</div>
|
||||||
|
|
||||||
|
<p class="course-short-desc">{{ $course['desc'] }}</p>
|
||||||
|
|
||||||
|
<div class="course-meta-row">
|
||||||
|
<span class="badge-bestseller">{{ $course['badge'] }}</span>
|
||||||
|
<span class="rating-star">
|
||||||
|
<i class="fas fa-star"></i> {{ $course['rating'] }}
|
||||||
|
</span>
|
||||||
|
<span class="rating-count">({{ $course['students'] }})</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="course-features">
|
||||||
|
<span><i class="fas fa-tools"></i> Practical Labs</span>
|
||||||
|
<span><i class="fas fa-certificate"></i> Verified ({{ $course['duration'] }})</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="course-footer" style="max-width: 200px;">
|
||||||
|
<a href="/apply" class="read-btn">Apply Course</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="course-footer">
|
|
||||||
<a href="/apply" class="read-btn">View & Apply Course</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -412,7 +411,6 @@ $courses=[
|
||||||
<h2>Why Study With Us?</h2>
|
<h2>Why Study With Us?</h2>
|
||||||
|
|
||||||
<div class="row g-4">
|
<div class="row g-4">
|
||||||
<!-- Feature 1 -->
|
|
||||||
<div class="col-xl-3 col-md-6">
|
<div class="col-xl-3 col-md-6">
|
||||||
<div class="feature-box">
|
<div class="feature-box">
|
||||||
<div class="feature-icon-wrapper">
|
<div class="feature-icon-wrapper">
|
||||||
|
|
@ -423,7 +421,6 @@ $courses=[
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Feature 2 -->
|
|
||||||
<div class="col-xl-3 col-md-6">
|
<div class="col-xl-3 col-md-6">
|
||||||
<div class="feature-box">
|
<div class="feature-box">
|
||||||
<div class="feature-icon-wrapper">
|
<div class="feature-icon-wrapper">
|
||||||
|
|
@ -434,7 +431,6 @@ $courses=[
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Feature 3 -->
|
|
||||||
<div class="col-xl-3 col-md-6">
|
<div class="col-xl-3 col-md-6">
|
||||||
<div class="feature-box">
|
<div class="feature-box">
|
||||||
<div class="feature-icon-wrapper">
|
<div class="feature-icon-wrapper">
|
||||||
|
|
@ -445,7 +441,6 @@ $courses=[
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Feature 4 -->
|
|
||||||
<div class="col-xl-3 col-md-6">
|
<div class="col-xl-3 col-md-6">
|
||||||
<div class="feature-box">
|
<div class="feature-box">
|
||||||
<div class="feature-icon-wrapper">
|
<div class="feature-icon-wrapper">
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
body {
|
body {
|
||||||
font-family: 'Segoe UI', sans-serif;
|
font-family: 'Segoe UI', sans-serif;
|
||||||
background: #f5f7fb;
|
background: #f5f7fb;
|
||||||
/* 80px තිබුණු එක 56px කළා, එවිට අනවශ්ය space එක ඉවත් වේ */
|
|
||||||
padding-top: 56px;
|
padding-top: 56px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
|
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
|
||||||
|
height: 83px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-brand {
|
.navbar-brand {
|
||||||
|
|
@ -41,12 +42,14 @@
|
||||||
color: rgba(255, 255, 255, 0.85) !important;
|
color: rgba(255, 255, 255, 0.85) !important;
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
transition: 0.2s ease;
|
transition: 0.2s ease;
|
||||||
|
font-weight:bold;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* දැනට ඉන්න පිටුව හෝ hover වන විට පැහැදිලිව පෙනීමට */
|
|
||||||
.nav-link:hover,
|
.nav-link:hover,
|
||||||
.nav-link.active-page {
|
.nav-link.active-page {
|
||||||
color: #ffc107 !important;
|
color: #ffc107 !important;
|
||||||
|
font-weight:bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-footer {
|
.site-footer {
|
||||||
|
|
|
||||||
|
|
@ -289,7 +289,8 @@
|
||||||
</h5>
|
</h5>
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
<form action="#" method="POST" id="studentLoginForm">
|
<!-- <form action="#" method="POST" id="studentLoginForm"> -->
|
||||||
|
<form action="{{ route('student.login.submit') }}" method="POST" id="studentLoginForm">
|
||||||
@csrf
|
@csrf
|
||||||
|
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
|
|
@ -320,7 +321,7 @@
|
||||||
|
|
||||||
<div class="modal-footer d-flex gap-2 justify-content-center">
|
<div class="modal-footer d-flex gap-2 justify-content-center">
|
||||||
<button type="button" class="btn btn-modal-cancel " data-bs-dismiss="modal">Cancel</button>
|
<button type="button" class="btn btn-modal-cancel " data-bs-dismiss="modal">Cancel</button>
|
||||||
<button type="submit" class="btn btn-modal-login ">Login</button>
|
<button type="submit" class="btn btn-modal-login "> Login </button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -255,6 +255,7 @@ body{
|
||||||
.why-section i {
|
.why-section i {
|
||||||
color: #5E244E;
|
color: #5E244E;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
{{-- ===================== HERO ===================== --}}
|
{{-- ===================== HERO ===================== --}}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
use App\Http\Controllers\AuthController;
|
use App\Http\Controllers\AuthController;
|
||||||
|
use App\Http\Controllers\StudentPortalController; // නිවැරදි Controller නමය
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
@ -15,27 +15,36 @@ Route::get('/', function () {
|
||||||
return view('welcome');
|
return view('welcome');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Authentication Routes
|
||||||
Route::post('/signuppage', [AuthController::class, 'register']);
|
Route::post('/signuppage', [AuthController::class, 'register']);
|
||||||
Route::post('/signin', [AuthController::class, 'login']);
|
Route::post('/signin', [AuthController::class, 'login']);
|
||||||
|
|
||||||
Route::post('/custom-logout', [AuthController::class, 'logout']);
|
Route::post('/custom-logout', [AuthController::class, 'logout']);
|
||||||
|
|
||||||
|
// --- STUDENT PORTAL SYSTEM ROUTES ---
|
||||||
|
|
||||||
|
|
||||||
|
Route::post('/student-login', [StudentPortalController::class, 'studentlogin'])->name('student.login.submit');
|
||||||
|
// Route::get('/student-login', [StudentPortalController::class, 'studentlogin'])->name('student.login.submit');
|
||||||
|
|
||||||
|
|
||||||
|
Route::get('/student-portal', function () {
|
||||||
|
if (!session()->has('student_id')) {
|
||||||
|
return redirect()->back()->with('error', 'Please login first!');
|
||||||
|
}
|
||||||
|
return view('StudentPortal');
|
||||||
|
})->name('student.portal');
|
||||||
|
|
||||||
|
// Route::get('/student-logout', function () {
|
||||||
|
// session()->forget('student_id');
|
||||||
|
// return redirect()->to('/students')->with('success', 'Logged out successfully!');
|
||||||
|
// })->name('student.logout');
|
||||||
|
|
||||||
|
|
||||||
// Static Pages (Views)
|
|
||||||
Route::view('/apply', 'apply')->name('apply');
|
Route::view('/apply', 'apply')->name('apply');
|
||||||
Route::view('/courses', 'courses')->name('courses');
|
Route::view('/courses', 'courses')->name('courses');
|
||||||
Route::view('/students', 'students')->name('students');
|
Route::view('/students', 'students')->name('students');
|
||||||
Route::view('/abouts', 'abouts')->name('abouts');
|
Route::view('/abouts', 'abouts')->name('abouts');
|
||||||
Route::view('/contact', 'contacts')->name('contact');
|
Route::view('/contact', 'contacts')->name('contact');
|
||||||
|
|
||||||
|
|
||||||
Route::view('/signin', 'signin')->name('signin');
|
Route::view('/signin', 'signin')->name('signin');
|
||||||
Route::view('/signup', 'signup')->name('signup');
|
Route::view('/signup', 'signup')->name('signup');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Route::get('/signup', function () {
|
|
||||||
// return view('signup');
|
|
||||||
// })->name('signup');
|
|
||||||
Loading…
Reference in New Issue