2022-01-28 18:45:54 +00:00
|
|
|
|
from flask import Blueprint
|
|
|
|
|
from flask_restful import reqparse, Resource, Api
|
2022-04-09 01:35:50 +00:00
|
|
|
|
from itsdangerous import TimedJSONWebSignatureSerializer
|
2022-01-28 18:45:54 +00:00
|
|
|
|
import sys
|
|
|
|
|
sys.path.append("..")
|
2022-04-09 01:35:50 +00:00
|
|
|
|
from config import admin_passwd
|
|
|
|
|
from units import token_auth, consul_kv
|
2022-11-15 19:35:43 +00:00
|
|
|
|
from units.ldap.LdapUser import Ldap
|
2022-04-09 01:35:50 +00:00
|
|
|
|
secret_key = consul_kv.get_value('ConsulManager/assets/secret/skey')['sk']
|
2022-06-04 09:36:18 +00:00
|
|
|
|
s = TimedJSONWebSignatureSerializer(secret_key,expires_in=28800)
|
2022-01-28 18:45:54 +00:00
|
|
|
|
|
|
|
|
|
blueprint = Blueprint('login',__name__)
|
|
|
|
|
api = Api(blueprint)
|
|
|
|
|
|
|
|
|
|
parser = reqparse.RequestParser()
|
|
|
|
|
parser.add_argument('username',type=str)
|
|
|
|
|
parser.add_argument('password',type=str)
|
2022-11-15 19:35:43 +00:00
|
|
|
|
parser.add_argument('ldap',type=str)
|
2022-01-28 18:45:54 +00:00
|
|
|
|
|
|
|
|
|
class User(Resource):
|
|
|
|
|
@token_auth.auth.login_required
|
|
|
|
|
def get(self, user_opt):
|
|
|
|
|
if user_opt == 'info':
|
|
|
|
|
return {
|
|
|
|
|
"code": 20000,
|
|
|
|
|
"data": {"roles": ["admin"],"name": "admin","avatar": "/sl.png"}}
|
|
|
|
|
def post(self, user_opt):
|
2022-11-15 19:35:43 +00:00
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
username = args.get('username')
|
|
|
|
|
password = args.get('password')
|
2022-11-16 15:53:43 +00:00
|
|
|
|
#ldap = args.get('ldap')
|
|
|
|
|
ldap = False if username == 'admin' else 'True'
|
2022-11-15 19:35:43 +00:00
|
|
|
|
#ldap认证
|
|
|
|
|
if user_opt == 'login' and ldap == "True":
|
|
|
|
|
print("ldap")
|
|
|
|
|
ldap_obj = Ldap()
|
|
|
|
|
ldap_result = ldap_obj.authpass(username,password)
|
2022-11-16 15:53:43 +00:00
|
|
|
|
if ldap_result == 1:
|
2022-11-15 19:35:43 +00:00
|
|
|
|
token = str(s.dumps(admin_passwd), encoding="utf-8")
|
|
|
|
|
return {"code": 20000, "data": {"token": "Bearer " + token,"username":username}}
|
2022-11-16 15:53:43 +00:00
|
|
|
|
elif ldap_result == 0:
|
|
|
|
|
return {"code": 40000, "data": "LDAP未开启。"}
|
|
|
|
|
elif ldap_result == 2:
|
|
|
|
|
return {"code": 40000, "data": "该LDAP用户不在白名单内。"}
|
|
|
|
|
else:
|
|
|
|
|
return {"code": 40000, "data": "LDAP用户密码错误!"}
|
2022-11-15 19:35:43 +00:00
|
|
|
|
else:
|
|
|
|
|
if user_opt == 'login':
|
|
|
|
|
print("非ldap")
|
|
|
|
|
if password == admin_passwd:
|
|
|
|
|
token = str(s.dumps(admin_passwd),encoding="utf-8")
|
|
|
|
|
return {"code": 20000,"data": {"token": "Bearer " + token,"username":username}}
|
|
|
|
|
else:
|
|
|
|
|
return {"code": 40000, "data": "密码错误!"}
|
|
|
|
|
|
|
|
|
|
elif user_opt == 'logout':
|
|
|
|
|
return {"code": 20000,"data": "success"}
|
2022-01-28 18:45:54 +00:00
|
|
|
|
|
|
|
|
|
api.add_resource(User, '/api/user/<user_opt>')
|