# Flask-Login Configuration
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'
# User model
class User(UserMixin):
def __init__(self,user_id, username, password):
self.id=user_id
self.username = username
self.password = password
def get_id(self):
return str(self.id) # Convert to string if necessary
@login_manager.user_loader
def load_user(user_id):
user_data =collection_user.find_one({'user_type': user_id})
if user_data:
return User(user_id=user_data['user_type'],username=user_data['user_type'], password=user_data['password'])
return None
#LOGIN MODULE
# Route for user login
@app.route('/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
print('inside the login')
user_type = request.form.get('user_type')
email = request.form.get('email')
password = request.form.get('password')
print('value of user type->>>', user_type)
print('value of email->>>', email)
print('value of password->>>', password)
user=collection_user.find_one({'user_type':user_type,'email':email,'password':password})
print('value of user is->>>',user)
if user:
user_obj=load_user(user_type)
# Generate a unique session ID for the user
session_key = f"user_{user['_id']}_{uuid4()}"
# Store user-specific data in the session using the generated session key
session['user_type'] = user_type
session['user_email'] = email
session['session_key'] = session_key
print('value of user_obj is-->>',user_obj)
login_user(user_obj)
return redirect(url_for('dashboard'))
return render_template('login.html', error='Invalid credentials,plz enter valid id or password')
print('direct out of the if condition')
return render_template('login.html', error=None)
@app.route('/dashboard')
@login_required
def dashboard():
#Retrieve the session key from the session
session_key = session.get('session_key')
if session_key:
# Retrieve the session key from the cookie
user_type = session.get('user_type')
print('value user_type is-->>',user_type)
if user_type == 'admin':
print('inside the admin user')
return redirect(url_for('home_page'))
elif user_type == 'indenter':
print('inside the indenter user')
return redirect(url_for('indenter_dashboard'))
elif user_type == 'purchaser':
print('inside the purchaser user')
return redirect(url_for('purchaser_dashboard'))
elif user_type == 'store':
print('inside the store user')
return redirect(url_for('store_dashboard'))