diff --git a/frontend/learnify-frontend/src/app/formes/admin-login/admin-login.component.css b/frontend/learnify-frontend/src/app/formes/admin-login/admin-login.component.css
index f6999dd..aaf65b3 100644
--- a/frontend/learnify-frontend/src/app/formes/admin-login/admin-login.component.css
+++ b/frontend/learnify-frontend/src/app/formes/admin-login/admin-login.component.css
@@ -743,3 +743,137 @@ form {
opacity: 0.1;
}
}
+
+/* Admin-specific Styles */
+.admin-side {
+ background: linear-gradient(135deg, var(--dark-purple), #1a2244);
+}
+
+.admin-notice {
+ background-color: #f8f9fa;
+ border-left: 3px solid var(--dark-purple);
+ padding: 12px 15px;
+ margin: 20px 0;
+ border-radius: 6px;
+ display: flex;
+ align-items: center;
+}
+
+.admin-notice i {
+ color: var(--dark-purple);
+ font-size: 18px;
+ margin-right: 10px;
+}
+
+.admin-notice span {
+ color: #555;
+ font-size: 14px;
+}
+
+.admin-overlay {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ text-align: center;
+ color: white;
+ background-color: rgba(0, 0, 0, 0.3);
+ padding: 30px;
+ border-radius: 12px;
+ width: 80%;
+ backdrop-filter: blur(5px);
+ z-index: 10;
+}
+
+.admin-icon {
+ font-size: 48px;
+ margin-bottom: 15px;
+ color: white;
+}
+
+.admin-overlay h3 {
+ font-size: 28px;
+ font-weight: 600;
+ margin-bottom: 10px;
+}
+
+.admin-overlay p {
+ font-size: 16px;
+ opacity: 0.9;
+}
+
+/* Student Login Link Section */
+.student-login-section {
+ margin-top: 30px;
+ text-align: center;
+ border-top: 1px solid #eee;
+ padding-top: 20px;
+}
+
+.student-login-text {
+ color: #6c757d;
+ font-size: 14px;
+ margin-bottom: 10px;
+}
+
+.student-login-link {
+ display: inline-flex;
+ align-items: center;
+ color: var(--dark-purple);
+ font-weight: 500;
+ text-decoration: none;
+ padding: 8px 15px;
+ border-radius: 20px;
+ background-color: var(--light-pink);
+ transition: all 0.3s ease;
+ cursor: pointer;
+}
+
+.student-login-link i {
+ margin-right: 8px;
+ font-size: 16px;
+}
+
+.student-login-link:hover {
+ background-color: var(--light-purple);
+ color: white;
+ transform: translateY(-2px);
+ box-shadow: 0 4px 10px rgba(45, 51, 107, 0.2);
+}
+
+.student-login-link:active {
+ transform: translateY(0);
+ box-shadow: 0 2px 5px rgba(45, 51, 107, 0.2);
+}
+
+/* Override the signup-link button for admin login */
+.signup-link .btn {
+ background-color: var(--light-pink);
+ color: var(--dark-purple);
+ border: none;
+ border-radius: 20px;
+ padding: 8px 15px;
+ font-size: 14px;
+ font-weight: 500;
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ transition: all 0.3s;
+ box-shadow: 0 2px 5px rgba(0,0,0,0.1);
+}
+
+.signup-link .btn:hover {
+ background-color: var(--light-purple);
+ color: white;
+ transform: translateY(-2px);
+ box-shadow: 0 5px 15px rgba(0,0,0,0.1);
+}
+
+/* Make the signin button more admin-like */
+.signin-btn {
+ background: linear-gradient(to right, #2D336B, #1A2244);
+}
+
+.signin-btn:hover {
+ background: linear-gradient(to right, #252E5F, #151B36);
+}
diff --git a/frontend/learnify-frontend/src/app/formes/admin-login/admin-login.component.html b/frontend/learnify-frontend/src/app/formes/admin-login/admin-login.component.html
index 7f89a4e..6055198 100644
--- a/frontend/learnify-frontend/src/app/formes/admin-login/admin-login.component.html
+++ b/frontend/learnify-frontend/src/app/formes/admin-login/admin-login.component.html
@@ -10,12 +10,12 @@
Learnify
- Welcome Back!
- Log in to continue your learning journey and access all your courses.
+ Admin Login
+ Access teacher and administrator features to manage courses, students, and content.
{{ errorMessage }}
@@ -50,39 +50,36 @@
Welcome Back!
- OR
+
+
+ This login is exclusively for teachers and administrators.
+
-
-
diff --git a/frontend/learnify-frontend/src/app/formes/admin-login/admin-login.component.ts b/frontend/learnify-frontend/src/app/formes/admin-login/admin-login.component.ts
index 0479d97..1f6f223 100644
--- a/frontend/learnify-frontend/src/app/formes/admin-login/admin-login.component.ts
+++ b/frontend/learnify-frontend/src/app/formes/admin-login/admin-login.component.ts
@@ -23,9 +23,9 @@ export class AdminLoginComponent implements OnInit {
// Single image with fallback
images = [
{
- src: 'assets/pics/login.png',
- alt: 'Login',
- fallback: 'https://via.placeholder.com/500x500.png?text=Login'
+ src: 'assets/pics/admin-login.png',
+ alt: 'Admin Login',
+ fallback: 'https://via.placeholder.com/500x500.png?text=Admin+Login'
}
];
currentImageIndex = 0;
@@ -96,19 +96,27 @@ export class AdminLoginComponent implements OnInit {
this.authService.adminLogin(email, password).subscribe({
next: (response) => {
this.isLoading = false;
- console.log('Login successful', response);
- // show toast message
- this.toastService.success('Login completed successfully!');
+ const userRole = response.user?.role || this.authService.userRole;
- // Navigate to dashboard
- this.router.navigate(['/admin/dashboard']);
+ // Verify user is a teacher or assistant
+ if (userRole === 'teacher' || userRole === 'assistant') {
+ // Success message
+ this.toastService.success('Admin login successful!');
+ // Navigate to admin dashboard
+ this.router.navigate(['/admin/dashboard']);
+ } else {
+ // Not authorized as admin
+ this.errorMessage = 'You do not have permission to access the admin area.';
+ this.toastService.error(this.errorMessage);
+ // Logout the user
+ this.authService.logout();
+ }
},
error: (error) => {
this.isLoading = false;
- this.errorMessage = 'Login failed. Please check your credentials and try again.';
+ this.errorMessage = 'Invalid credentials. This login is for administrators only.';
console.error('Login error', error);
- // show toast message
- this.toastService.error("Login failed. Please check your credentials and try again.");
+ this.toastService.error(this.errorMessage);
}
});
}
@@ -120,4 +128,9 @@ export class AdminLoginComponent implements OnInit {
// Navigate to forgot password page
this.router.navigate(['/forgot-password']);
}
+
+ // Navigate back to the regular student login page
+ goToStudentLogin() {
+ this.router.navigate(['/']);
+ }
}
\ No newline at end of file
diff --git a/frontend/learnify-frontend/src/app/formes/login/login.component.ts b/frontend/learnify-frontend/src/app/formes/login/login.component.ts
index d8d862f..b940952 100644
--- a/frontend/learnify-frontend/src/app/formes/login/login.component.ts
+++ b/frontend/learnify-frontend/src/app/formes/login/login.component.ts
@@ -97,11 +97,22 @@ export class LoginComponent implements OnInit {
next: (response) => {
this.isLoading = false;
console.log('Login successful', response);
- // show toast message
- this.toastService.success('Login completed successfully!');
- // Navigate to dashboard
- this.router.navigate(['/admin/dashboard']);
+ // Show success toast message
+ this.toastService.success('Login completed successfully!');
+
+ // Get user role
+ const userRole = response.user?.role || this.authService.userRole;
+
+ // Handle different user roles
+ if (userRole === 'teacher' || userRole === 'assistant') {
+ // If a teacher/admin tries to log in through the student form
+ this.toastService.info('Please use the admin login page for teacher/admin access');
+ this.router.navigate(['/admin/login']);
+ } else {
+ // All other users (including students) go to student dashboard
+ this.router.navigate(['/student/dashboard']);
+ }
},
error: (error) => {
this.isLoading = false;
@@ -120,4 +131,8 @@ export class LoginComponent implements OnInit {
// Navigate to forgot password page
this.router.navigate(['/forgot-password']);
}
+
+ goToAdminLogin() {
+ this.router.navigate(['/admin/login']);
+ }
}
\ No newline at end of file