temp
This commit is contained in:
parent
4b983ba352
commit
1142502907
|
@ -0,0 +1,50 @@
|
|||
import base64
|
||||
|
||||
from common.scripts import real_file_path
|
||||
|
||||
from Crypto.PublicKey import RSA
|
||||
from Crypto.Cipher import PKCS1_v1_5 as PKCS1_cipher
|
||||
|
||||
|
||||
# 获取密钥
|
||||
def get_key(**kwargs):
|
||||
# 密钥文件
|
||||
key_file = kwargs['key_file']
|
||||
# 密钥文件绝对路径
|
||||
path = real_file_path('/common/static/rsa/' + key_file)
|
||||
with open(path) as f:
|
||||
data = f.read()
|
||||
key = RSA.importKey(data)
|
||||
return key
|
||||
|
||||
|
||||
# 用公钥加密
|
||||
def encrypt_data(**kwargs):
|
||||
# 待加密信息
|
||||
msg = kwargs['msg']
|
||||
# 获取密钥
|
||||
public_key = get_key(key_file='rsa_public_key.pem')
|
||||
cipher = PKCS1_cipher.new(public_key)
|
||||
encrypt_text = base64.b64encode(cipher.encrypt(bytes(msg.encode("utf8"))))
|
||||
return encrypt_text.decode('utf-8')
|
||||
|
||||
|
||||
# 用私钥解密
|
||||
def decrypt_data(**kwargs):
|
||||
# 待加密信息
|
||||
encrypt_msg = kwargs['encrypt_msg']
|
||||
# 获取密钥
|
||||
private_key = get_key(key_file='rsa_private_key.pem')
|
||||
cipher = PKCS1_cipher.new(private_key)
|
||||
back_text = cipher.decrypt(base64.b64decode(encrypt_msg), 0)
|
||||
return back_text.decode('utf-8')
|
||||
|
||||
|
||||
# 检验
|
||||
def check_encrypt_decrypt(**kwargs):
|
||||
msg = kwargs['msg']
|
||||
decrypt_msg = decrypt_data(encrypt_msg=kwargs['encrypt_msg'])
|
||||
if msg == decrypt_msg:
|
||||
return True
|
||||
else:
|
||||
return False
|
|
@ -2,6 +2,7 @@ import os
|
|||
import json
|
||||
import functools
|
||||
|
||||
from uuid import uuid4
|
||||
from flask import request
|
||||
|
||||
from setting import APP_NAME, API_SECRET
|
||||
|
@ -61,3 +62,25 @@ def sub_dict(param1, param2):
|
|||
子集
|
||||
"""
|
||||
return dict((key, value) for key, value in param1.items() if key in param2)
|
||||
|
||||
|
||||
def make_id():
|
||||
"""
|
||||
简化32位uuid为8位id
|
||||
Parameters:
|
||||
-
|
||||
Returns:
|
||||
result: 8位ID
|
||||
"""
|
||||
uuid_chars = ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
|
||||
"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
|
||||
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
|
||||
"N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
|
||||
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
|
||||
uuid = str(uuid4()).replace('-', '')
|
||||
res = ''
|
||||
for i in range(0, 8):
|
||||
sub = uuid[i * 4: i * 4 + 4]
|
||||
x = int(sub, 16)
|
||||
res += uuid_chars[x % 0x3E]
|
||||
return res
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
-----BEGIN ENCRYPTED PRIVATE KEY-----
|
||||
MIIE6TAbBgkqhkiG9w0BBQMwDgQI5eJVVE2oODwCAggABIIEyKh/fgkXOuWAX7bo
|
||||
m0qYabhi3roFbIsMVADgaEqdRhcxL7a1bQTdZhyMh0GNx36kL6kZyCLkBkzQAh/A
|
||||
yQ/7rEGdKMApY6QKlkHEM797UK49c1B3v21NPNHgpzkfGa8xNqIsJSolt1IZSEdN
|
||||
lx93k+oKMr37H7gLBTf9o3WkawXAd6Qd8RGstKbrHMgwsiHq3UTRBLLc3xrRDLi7
|
||||
cR9bqzwGBTXBP6UGNSGQPy4jOF9BtSxxSefrEve5aSTI6nigkyeqcY2BzeYCXr//
|
||||
vcvEAg8xjjP76S0h0b3xSLwc3co8aZI5kz7aEZO7BocxVntZswtzpAY+dkMX3ef7
|
||||
RiRj41gOboEXfYSi5gfhSXWs2ac/poROfaIN5NVs3JXSHMRAwV/sdbNIhIgenfZ1
|
||||
WuTFU7kBLt7FgNJmmhCvqyfH5oz1ncL38X+XtFrGnu7PTxGx+OuvZydqMk3gkCjy
|
||||
5avOExoIPdokIp5jHss96V95RqYhySq+iWvdxFTdZTOmgdMfcgkFh1tUq+nzDBnT
|
||||
BQVk8aasO5lTs670qLTrpGN2D67V0uFsqSqUkW07oc8ZuBLHkCGkjVRUsYERcKLy
|
||||
TKyxajxs91rE1D4ojRG+X+ThwOlg2UsxXxLC3t/AMlN2nt5SK6popSv6Z3gVKjkO
|
||||
6UMXw8ip8iQ0GWS9IHrxb6xSXWN8ELoMyDkN6O/uI86xEx/3+t0E95nPUYddIbtJ
|
||||
zqrGAMZLiDOwb/WW3o9O+dwkqpgzQESLF6klQLaTpIMExKgU0pvKtwzE8kQX0ZnW
|
||||
wAkCpTQB68TQIXJhmhNwErupXLQXHrdOt3TCRjVgtcFLD5Z5MmyfECk3ugfRd2Oz
|
||||
zLMwkOMyXn+/Wu8xYIiOq0FdRrZGaFEIo5gkLtgYD1jqJztRct7BTH2lMUqHHy5e
|
||||
GpA3dTXjGdypcIU3AY4OOmOfISdQnd2AQ56Z30oRIwVmGhNtYT11kq5/DPgxV2M+
|
||||
F8TBVLHQhLuN23wLS32t2Yz3ZvPiCM4dE+983PkGnBMx1wPCfY8PwxVirhS+O53U
|
||||
jndVJutJB/7h0iBLhpQIGlLl8a9tsY7inInEeTwjSBVyzKkR3UWn4EJKUsa4+yeO
|
||||
AgZroykVZb+uvAkc1phz5XzQ7jRZQW9NuGHdWkdQs+EBYrg03siba9DDChNzz9cC
|
||||
Hcj32kidCYD5GyxTBp6Pe9TiCqorJHoxdoeZNnswOcIfUt0lowi0VdoiY+Rha8J+
|
||||
hNfzggPiDRPCZt4kWG9M1Jlup5SLjPW4KEK0yZr3dNiFoxvadh/HSzAFDEAQxs5r
|
||||
o4P6Yo7EcY5Htb5suxUb/cEoz5aqczSwld+JirpxHOaLrRhDwBVp6MN+a3LUZF33
|
||||
ukYzG9jmTD2d3UPRogIeixl6bbY7NlXEinLTGqaSX/TQLiS569XlcWIgQIybxmPm
|
||||
DZYAbue4IYuCxZlXn5xT1pt86cQC5yXIlCL0C35ZYGaqJg/8xq1j78CTOgrrD+/D
|
||||
OcAItL1bZOytwH8eiB4A2A24RXMTIDRiF2Fv/XO9K2ZlnX20s0M2ism1HPmk252W
|
||||
jdeWp9i+KQXhcFd583tBDS+Cg58RcH7icIj22AXXNhV+/OKs1pokbmR2+603p5ZW
|
||||
A5fshckye1hPUbBS4w==
|
||||
-----END ENCRYPTED PRIVATE KEY-----
|
|
@ -0,0 +1,9 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsF1jbjOSGhf+IOwvsXpU
|
||||
EKrJMqckHonBJnBa3rV1nHYJmHRniIkJpqUsHROHD2jZVrIGUU8t5Sg4ETCFhIlT
|
||||
PWg5l7/8i/AWzqaCDoT22Iyx/9zXaCZvMhJ1VhRWyG8H7iCXM85kJ/Pok2U1In1E
|
||||
YCXacR7/AcGyUSFq++aUo2S9g2oVNOhU05rZbU/vuPPi/GuIWEZWPnHKna3z1lKB
|
||||
vV84/yPSdsPntvjoXRme+dFOiVeHGsQIRjVtFCHwDg2oOpvy49AaaiH7uvtdkIoL
|
||||
zXA9CAVAmmq0jA02ko7ldRpvWb6pc6xp79js9u2i4oFFY5/9puSeD2AeLhWOhZrl
|
||||
gwIDAQAB
|
||||
-----END PUBLIC KEY-----
|
|
@ -4,6 +4,11 @@ class User:
|
|||
|
||||
def __init__(self):
|
||||
self.uid = None
|
||||
self.email = None
|
||||
self.name = None
|
||||
self.pwd = None
|
||||
self.role = None
|
||||
self.menus = None
|
||||
self.group = None
|
||||
|
||||
def create_user(self):
|
||||
pass
|
||||
|
|
17
user/db.py
17
user/db.py
|
@ -0,0 +1,17 @@
|
|||
import pymongo
|
||||
|
||||
client = pymongo.MongoClient('mongodb://{}:{}@{}:{}'.format('root', 'RYIHrqml#LSW6#!*', '116.63.130.34', 27020))
|
||||
|
||||
|
||||
def find_user_info(param):
|
||||
"""
|
||||
查询用户信息
|
||||
Parameters:
|
||||
param: 查询条件
|
||||
Returns:
|
||||
record: 记录
|
||||
"""
|
||||
collection = client['用户']['用户信息']
|
||||
data = collection.find(param, {'_id': False})
|
||||
record = list(data)
|
||||
return record
|
|
@ -0,0 +1,90 @@
|
|||
import re
|
||||
import time
|
||||
|
||||
from werkzeug.security import generate_password_hash
|
||||
|
||||
from common.rsa import decrypt_data
|
||||
from common.scripts import read_json_file, make_id
|
||||
from user.db import find_user_info
|
||||
|
||||
|
||||
def check_mail_fmt(email):
|
||||
"""
|
||||
邮箱地址格式校验
|
||||
Parameters:
|
||||
email: 邮箱
|
||||
Returns:
|
||||
result: 邮箱校验结果,正确返回True,不正确返回False
|
||||
"""
|
||||
regex = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$"
|
||||
case = (len(email) > 7) and (re.match(regex, email) is not None)
|
||||
result = True if case else False
|
||||
return result
|
||||
|
||||
|
||||
def check_pwd_fmt(pwd):
|
||||
"""
|
||||
密码强度校验
|
||||
Parameters:
|
||||
pwd: 密码(已加密)
|
||||
Returns:
|
||||
result: 密码强度校验结果,正确返回True,不正确返回False
|
||||
"""
|
||||
|
||||
try:
|
||||
password = decrypt_data(encrypt_msg=pwd)
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
regex = "^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)^.{8,}$"
|
||||
case = (len(password) >= 8) and (re.match(regex, password) is not None)
|
||||
result = True if case else False
|
||||
return result
|
||||
|
||||
|
||||
def gen_new_uid():
|
||||
"""
|
||||
生成新的用户ID,如果该ID存在,则重新生成
|
||||
Parameters:
|
||||
-
|
||||
Returns:
|
||||
new_id: 生成的用户ID
|
||||
"""
|
||||
# 生成新ID
|
||||
new_id = make_id()
|
||||
# 检查新ID是否存在,如果存在则继续生成新ID
|
||||
case = find_user_info({"企业ID": new_id}) is []
|
||||
while case:
|
||||
new_id = make_id()
|
||||
# 新ID可使用,返回新ID
|
||||
return new_id
|
||||
|
||||
|
||||
def create_user_scripts(email, name, pwd, role, group):
|
||||
"""
|
||||
Notes
|
||||
Parameters:
|
||||
email: desc
|
||||
name: desc
|
||||
pwd: desc
|
||||
role: desc
|
||||
group: desc
|
||||
Returns:
|
||||
res: desc
|
||||
"""
|
||||
|
||||
if not check_mail_fmt(email):
|
||||
return False
|
||||
|
||||
if not check_pwd_fmt(pwd):
|
||||
return False
|
||||
|
||||
user = read_json_file('/user/static/db_design/user.json')
|
||||
user['UID'] = gen_new_uid()
|
||||
user['email'] = email
|
||||
user['name'] = name
|
||||
user['pwd'] = generate_password_hash(decrypt_data(encrypt_msg=pwd))
|
||||
user['role'] = role
|
||||
user['group'] = group
|
||||
user['create_time'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# 数据库设置
|
||||
DB_USER = 'root'
|
||||
DB_PWD = 'RYIHrqml#LSW6#!*'
|
||||
DB_HOST = '116.63.130.34'
|
||||
DB_PORT = 27020
|
|
@ -1,6 +1,10 @@
|
|||
{
|
||||
"UID": null,
|
||||
"email": null,
|
||||
"pwd": null,
|
||||
"name": null,
|
||||
"status": null,
|
||||
"role": null,
|
||||
"menus": null
|
||||
"group": null,
|
||||
"create_time": null
|
||||
}
|
Loading…
Reference in New Issue