Files
2025-09-28 00:52:31 +03:00

201 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🔐 Authentication Guide
This guide explains how to use the authentication system in the Student Success Predictor application.
## 🚀 Quick Start
### Default Credentials
The application comes with two pre-configured demo accounts:
**Administrator Account:**
- Username: `admin`
- Password: `admin123`
- Role: Admin (full access + user management)
**Educator Account:**
- Username: `educator`
- Password: `hello123`
- Role: Educator (prediction access + export features)
### First Login
1. Run the application: `streamlit run app.py`
2. You'll see the login screen with demo credentials displayed
3. Use either account above to log in
4. **Important:** Change default passwords in production!
## 👥 User Roles & Permissions
### 🏷️ Role Hierarchy
1. **Admin** - Full access to everything
- Use prediction features
- Export prediction reports
- Manage users (add/delete)
- Access admin panel
2. **Educator** - Educational staff access
- Use prediction features
- Export prediction reports
- Cannot manage users
3. **User** - Basic access (for future use)
- Use prediction features only
- No export capabilities
- No admin functions
## 🛠️ User Management (Admin Only)
### Adding New Users
1. Login as admin
2. In the sidebar, expand "👨‍💼 Admin Panel"
3. Fill out the "Add New User" form:
- Username (unique identifier)
- Password (secure password)
- Full Name (display name)
- Role (user/educator/admin)
4. Click "➕ Add User"
### Managing Existing Users
- View all users in the "Existing Users" section
- Delete users with the 🗑️ button (except yourself)
- Users are stored in `users.json` file
## 🔒 Security Features
### Password Hashing
- All passwords are hashed using SHA-256
- Plain text passwords are never stored
- Secure credential verification
### Session Management
- Automatic session timeout (30 minutes of inactivity)
- Secure session state management
- Proper logout functionality
### Role-Based Access Control
- Different features available based on user role
- Hierarchical permission system
- Secure admin-only functions
## 📁 Data Storage
### User Data File
- Users stored in: `users.json`
- Contains hashed passwords only
- Includes user roles and names
- Automatically created on first run
### Session Storage
- Uses Streamlit's built-in session state
- No persistent session storage
- Secure temporary authentication
## 🔧 Customization
### Adding New Roles
Edit `src/utils/auth.py` and modify:
```python
role_hierarchy = {
"admin": 3,
"educator": 2,
"student": 1, # Add new role here
"user": 0
}
```
### Changing Session Timeout
In `app.py`, modify the timeout value:
```python
check_session_timeout(60) # 60 minutes instead of 30
```
### Custom Password Requirements
Add validation in `src/utils/auth.py`:
```python
def validate_password(password: str) -> bool:
# Add your password requirements here
return len(password) >= 8 and any(c.isdigit() for c in password)
```
## 🚨 Production Security
### Important Security Steps for Production:
1. **Change Default Passwords**
```python
# Delete users.json and create new admin account
```
2. **Use Environment Variables**
```python
import os
ADMIN_PASSWORD = os.getenv('ADMIN_PASSWORD', 'secure_password')
```
3. **Implement Database Storage**
- Replace JSON file with proper database
- Use encrypted connection strings
- Implement proper backup procedures
4. **Add Password Complexity Requirements**
- Minimum length requirements
- Special character requirements
- Password expiration policies
5. **Implement Rate Limiting**
- Prevent brute force attacks
- Temporary account lockouts
- Login attempt logging
6. **Enable HTTPS**
- Secure data transmission
- SSL/TLS certificates
- Secure cookie settings
## 🐛 Troubleshooting
### Login Issues
**Problem:** "Invalid username or password"
- **Solution:** Check credentials carefully, case-sensitive
**Problem:** Session expired message
- **Solution:** Normal after 30 minutes, just log in again
**Problem:** Cannot access admin features
- **Solution:** Ensure you're logged in with admin role
### File Permission Issues
**Problem:** Cannot create users.json
- **Solution:** Check write permissions in app directory
**Problem:** Cannot save new users
- **Solution:** Ensure sufficient disk space and permissions
## 📝 Development Notes
### File Structure
```
src/utils/auth.py # Main authentication module
users.json # User credentials storage (auto-created)
app.py # Main app with auth integration
```
### Key Functions
- `require_auth()` - Decorator for protected functions
- `check_role_permission()` - Role-based access control
- `render_admin_panel()` - User management interface
- `check_session_timeout()` - Session timeout handling
This authentication system provides a secure, user-friendly way to control access to your Student Success Predictor application!