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