File size: 2,183 Bytes
bab9c3b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
57
from app import app
from flask import render_template, request, redirect, url_for, session, flash
import utils.globals as globals
from utils.globals import *
from utils.tools import *
from werkzeug.security import check_password_hash
from gateway.index import *


# 登录页面
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        loginTarget = request.form['login_target']
        user = next((user for user in globals.users if user['username'] == username), None)
        
        if user and check_password_hash(user['password'], password):
            # 登录成功,存储用户信息到session
            session['logged_in'] = True
            session['user_id'] = user['id']
            session['username'] = user['username']
            session['role'] = user['role']
            
            flash('登录成功!', 'success')
            
            # 如果是管理员,跳转到管理页面,否则跳转到ChatGPT共享页面
            if user['role'] == 'admin' and loginTarget == 'manage':
                return redirect(url_for('chatgpt'))
            elif user['role'] == 'user' and loginTarget == 'manage':
                flash('你没有管理员权限。', 'danger')
            elif loginTarget == 'gpt':
                logurl = getoauth(session.get('user_id'))
                session.clear()
                return redirect(logurl)
            elif loginTarget == 'claude':
                logurl = get_claude_login_url(user['bind_claude_token'],session.get('user_id'))
                if logurl == None:
                    flash('你没有此权限。', 'danger')
                else:
                    session.clear()
                    return redirect(logurl)
        else:
            flash('用户名或密码错误,请重试。', 'danger')
    
    return render_template('login.html')

# 登出路由
@app.route('/logout')
def logout():
    session.clear()
    flash('已成功登出。', 'success')
    return redirect(url_for('login'))