-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathapp.py
More file actions
56 lines (45 loc) · 1.57 KB
/
app.py
File metadata and controls
56 lines (45 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import os
from flask import Flask
from flask_login import LoginManager
from werkzeug.security import check_password_hash
from database import init_db, get_user_by_id
# Create Flask app
app = Flask(__name__)
app.secret_key = os.environ.get("SESSION_SECRET", "dev-secret-key-change-in-production")
# Initialize database
init_db()
# Login manager setup
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'
login_manager.login_message = 'يرجى تسجيل الدخول للوصول لهذه الصفحة'
login_manager.login_message_category = 'info'
# Simple User class for Flask-Login
class User:
def __init__(self, user_data):
self.id = str(user_data['id'])
self.username = user_data['username']
self.email = user_data['email']
self.password_hash = user_data['password_hash']
self.first_name = user_data['first_name']
self.last_name = user_data['last_name']
self.phone = user_data['phone']
self.created_at = user_data['created_at']
def is_authenticated(self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def get_id(self):
return self.id
def check_password(self, password):
return check_password_hash(self.password_hash, password)
@login_manager.user_loader
def load_user(user_id):
user_data = get_user_by_id(int(user_id))
if user_data:
return User(user_data)
return None
# Import routes after app creation to avoid circular imports
from routes import *