Merge remote-tracking branch 'origin/master' into master
# Conflicts: # dvadmin-backend/apps/vadmin/system/urls.py # dvadmin-backend/apps/vadmin/system/views.pypull/2/head
commit
a80c52136b
|
@ -19,3 +19,4 @@ bin-release/
|
|||
docker_env/mysql/data/
|
||||
docker_env/redis/data/
|
||||
*/.idea
|
||||
dvadmin-doc/docs/.vuepress/dist
|
||||
|
|
24
README.md
24
README.md
|
@ -31,20 +31,24 @@ github地址:[https://github.com/liqianglog/django-vue-admin](https://github.c
|
|||
|
||||
## 内置功能
|
||||
|
||||
##### 预计3月底发布v1.0正式版本,个别功能开发中 [版本功能说明](https://gitee.com/liqianglog/django-vue-admin/wikis/releaseNote?sort_id=3615540)
|
||||
|
||||
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
|
||||
2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
|
||||
3. 岗位管理:配置系统用户所属担任职务。
|
||||
4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
|
||||
5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
|
||||
4. 菜单管理:配置系统菜单,操作权限,按钮权限标识、后端接口权限等。
|
||||
5. 角色管理:角色菜单权限分配、数据权限分配、设置角色按机构进行数据范围权限划分。
|
||||
6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
|
||||
7. 参数管理:对系统动态配置常用参数。
|
||||
8. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
|
||||
9. 登录日志:系统登录日志记录查询包含登录异常。
|
||||
10. 在线用户:当前系统中活跃用户状态监控。
|
||||
11. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
|
||||
12. ~~代码生成:前后端代码的生成。~~
|
||||
13. ~~服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。~~
|
||||
14. ~~在线构建器:拖动表单元素生成相应的HTML代码。~~
|
||||
8. 文件管理:管理所有上传的和导出的文件。
|
||||
9. 通知公告:发布通知公告给所有人,进行消息的通知。
|
||||
10. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
|
||||
11. 登录日志:系统登录日志记录查询包含登录异常。
|
||||
12. 在线用户:当前系统中活跃用户状态监控、用户强退功能。
|
||||
13. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
|
||||
14. 用户注册:新用户注册页面。
|
||||
15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈、celery 当前状态等相关信息。
|
||||
16. 在线构建器:拖动表单元素生成相应的HTML代码。
|
||||
|
||||
## 在线体验
|
||||
|
||||
|
@ -98,7 +102,7 @@ npm run build:prod
|
|||
python3 manage.py makemigrations
|
||||
python3 manage.py migrate
|
||||
5. 初始化数据
|
||||
python3 manage.py initialization
|
||||
python3 manage.py init
|
||||
6. 启动项目
|
||||
python3 manage.py runserver 0.0.0.0:8000
|
||||
|
||||
|
|
|
@ -6,6 +6,43 @@
|
|||
|
||||
version: "3"
|
||||
services:
|
||||
dvadmin-ui:
|
||||
container_name: dvadmin-ui
|
||||
build:
|
||||
context: ./
|
||||
dockerfile: ./docker_env/vue-ui/Dockerfile
|
||||
environment:
|
||||
TZ: Asia/Shanghai
|
||||
volumes:
|
||||
- "./dvadmin-ui:/dvadmin-ui"
|
||||
command:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- |
|
||||
cd /dvadmin-ui
|
||||
npm install --registry=https://registry.npm.taobao.org
|
||||
rm -rf /dvadmin-ui/dist
|
||||
npm run build:prod
|
||||
|
||||
|
||||
dvadmin-doc:
|
||||
container_name: dvadmin-doc
|
||||
build:
|
||||
context: ./
|
||||
dockerfile: ./docker_env/vue-doc/Dockerfile
|
||||
environment:
|
||||
TZ: Asia/Shanghai
|
||||
volumes:
|
||||
- "./dvadmin-doc:/dvadmin-doc"
|
||||
command:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- |
|
||||
cd /dvadmin-doc
|
||||
npm install --registry=https://registry.npm.taobao.org
|
||||
rm -rf /dvadmin-doc/dist
|
||||
npm run docs:build
|
||||
|
||||
|
||||
dvadmin-redis:
|
||||
image: redis:latest
|
||||
|
|
|
@ -1,59 +1,61 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIFiTCCBHGgAwIBAgIQCSthZmB3qh7J8+SexO9NvzANBgkqhkiG9w0BAQsFADBu
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
|
||||
RFYgVExTIENBIC0gRzEwHhcNMjEwMzA2MDAwMDAwWhcNMjIwMzA2MjM1OTU5WjAj
|
||||
MSEwHwYDVQQDExhhcGkuZGphbmdvLXZ1ZS1hZG1pbi5jb20wggEiMA0GCSqGSIb3
|
||||
DQEBAQUAA4IBDwAwggEKAoIBAQDjV1vx/gUbM4FAS0jL+8EomI8l71vooU1NOaHp
|
||||
oAeEOFEaVOLwmB7ObPWhsl4bb2z+pA6081360bzu4d46ZsRV45IY5YafMLaSF+Fn
|
||||
sKZHc1db18yp60GSITJoEIrqDV+cmwaBlcdgvOi0MzcHpoAv5yJrarwYj2sruNfb
|
||||
+Whu6yPGY+ZEmJVKPcOxS67ckkBFyf0yfBci+0sYh1cTNxGx/oISnu8b290d2G0H
|
||||
cIIB8GmpZBcrQtvHXq59jTwhL0soX3s4ZsMIQZlHVnUVYfEGyl90i3pt9WGraDcI
|
||||
H3C1l4nG5+u7XsiBtPAhdLHUIp6+KAcXX+OeSP5Xv+Cn2IN7AgMBAAGjggJsMIIC
|
||||
aDAfBgNVHSMEGDAWgBRVdE+yck/1YLpQ0dfmUVyaAYca1zAdBgNVHQ4EFgQU5DlU
|
||||
Ojy2nTlzZ4fxjtbaHX+IoLkwIwYDVR0RBBwwGoIYYXBpLmRqYW5nby12dWUtYWRt
|
||||
aW4uY29tMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB
|
||||
BQUHAwIwPgYDVR0gBDcwNTAzBgZngQwBAgEwKTAnBggrBgEFBQcCARYbaHR0cDov
|
||||
L3d3dy5kaWdpY2VydC5jb20vQ1BTMIGABggrBgEFBQcBAQR0MHIwJAYIKwYBBQUH
|
||||
MAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBKBggrBgEFBQcwAoY+aHR0cDov
|
||||
L2NhY2VydHMuZGlnaWNlcnQuY29tL0VuY3J5cHRpb25FdmVyeXdoZXJlRFZUTFND
|
||||
QS1HMS5jcnQwCQYDVR0TBAIwADCCAQIGCisGAQQB1nkCBAIEgfMEgfAA7gB1ACl5
|
||||
vvCeOTkh8FZzn2Old+W+V32cYAr4+U1dJlwlXceEAAABeAh+/14AAAQDAEYwRAIg
|
||||
YaqOZibfJ+3YCZ0J2J+nOKAcDcOnGLLLBG7DkU+T+EgCIEmuNiy7gZRDUBHQxCht
|
||||
329qSdpzeGnKUNczDUzxtxe+AHUAIkVFB1lVJFaWP6Ev8fdthuAjJmOtwEt/XcaD
|
||||
XG7iDwIAAAF4CH7/QwAABAMARjBEAiB9i6rk7/0JQ3WB2Cktkt8UHbs2SSTQKcbY
|
||||
71Pjr2gHNAIgLZbdCE34ldSfcH9ZQzer8T6bGNNZ5ARDA8Cjyh5ABM8wDQYJKoZI
|
||||
hvcNAQELBQADggEBAG2T1E+mZTcRge0ivp1mTLdhy2qKd4tw8WosFCU7wv8U6D8f
|
||||
DQV4OBOj/n0jXArAUHCcUhNNkxuwT1n9H1AOxVqrIqqUASIyqwCRukQudXBVI7rG
|
||||
bCSdjP8bmlFodBqpfbXnccwgzTzB4DGJrV44NGD0lJEUE/890EP+1Ay++y8k71jw
|
||||
Ns9dMdA+GKTmj6YxCI0BJnldpKN8dxNN/XGdAPJaf8u3zHgUN/CXLNbnwQTUWlSv
|
||||
1qeFNBMMeUypWtpy4V9jJrqzvKKQQv8vbZgmZBIGhjq72fBK3DR2OofWjYT/ckIz
|
||||
tGbJfoef3qjhNeTxty+S5WoVwtHPr+3MUmk3j7o=
|
||||
MIIFoTCCBImgAwIBAgIQA4TN09XlucVnL4BLCuvHijANBgkqhkiG9w0BAQsFADBy
|
||||
MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg
|
||||
SW5jLjEdMBsGA1UECxMURG9tYWluIFZhbGlkYXRlZCBTU0wxHTAbBgNVBAMTFFRy
|
||||
dXN0QXNpYSBUTFMgUlNBIENBMB4XDTIxMDMwMzAwMDAwMFoXDTIyMDMwMjIzNTk1
|
||||
OVowIzEhMB8GA1UEAxMYYXBpLmRqYW5nby12dWUtYWRtaW4uY29tMIIBIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu5QSBTQbToLUu4wCYy/BNoinqFkXiTZE
|
||||
aV6/5PJIeNsz75fnAEuBpIATEHqRsY6L9HdYAvBiAEv6ufCZhzwWF7ph1ZMhg6ul
|
||||
foaQwoVCkbKi/zgwi3tvteda5vXQs4e8GvgZ6zkabQ4cZFjVpb3dA6huBbs20jLf
|
||||
YYXsXWsJEGF3JK5okQ08+u/h/q0lFDFa70S9hpQXMtSfCCW/AuEc/+tG7rnUul1o
|
||||
MXjpVnDOmg+CZfIYgi9D30/zd1DYFJOEwawl5FKLFQY7TOn3RlZ3SR4mNbbhIgHP
|
||||
L9S1xHGcm8UC7PKuOgh8+5Nl0aeeUB1liuzM/w5JbF4L4FoZW6ciNQIDAQABo4IC
|
||||
gDCCAnwwHwYDVR0jBBgwFoAUf9OZ86BHDjEAVlYijrfMnt3KAYowHQYDVR0OBBYE
|
||||
FHvXBhsuPta7SwvCVVgv9e/bZ9AeMCMGA1UdEQQcMBqCGGFwaS5kamFuZ28tdnVl
|
||||
LWFkbWluLmNvbTAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEG
|
||||
CCsGAQUFBwMCMD4GA1UdIAQ3MDUwMwYGZ4EMAQIBMCkwJwYIKwYBBQUHAgEWG2h0
|
||||
dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCBkgYIKwYBBQUHAQEEgYUwgYIwNAYI
|
||||
KwYBBQUHMAGGKGh0dHA6Ly9zdGF0dXNlLmRpZ2l0YWxjZXJ0dmFsaWRhdGlvbi5j
|
||||
b20wSgYIKwYBBQUHMAKGPmh0dHA6Ly9jYWNlcnRzLmRpZ2l0YWxjZXJ0dmFsaWRh
|
||||
dGlvbi5jb20vVHJ1c3RBc2lhVExTUlNBQ0EuY3J0MAkGA1UdEwQCMAAwggEEBgor
|
||||
BgEEAdZ5AgQCBIH1BIHyAPAAdgApeb7wnjk5IfBWc59jpXflvld9nGAK+PlNXSZc
|
||||
JV3HhAAAAXf48Te1AAAEAwBHMEUCIDjqPKTNX4EcFxayaLirTT1y98X9X1HP97bM
|
||||
IV0HpJmYAiEAjMdYYUqFuHLkSl4/bq5F/FPtt25AbKGhyolIVDWvsNoAdgAiRUUH
|
||||
WVUkVpY/oS/x922G4CMmY63AS39dxoNcbuIPAgAAAXf48TgFAAAEAwBHMEUCIBQM
|
||||
bXvVtAOXQfBjp+7HzsyWH51BZ2vyH1VyLpuGSs7dAiEAiyt4h7P7oRheoZKmn8wp
|
||||
CptaYocY509Dr8aFbCicWWAwDQYJKoZIhvcNAQELBQADggEBAJG3Ne57IlaucGjH
|
||||
y6j/zJsRnCsIrVNoPUROma+2FD7SauHT6U7iDLtNT5BIrBmDcEnYdqMAjJQoRJC1
|
||||
VvXSkABEngUajpdpB0m8k9UVB5W+6Extt8TYyRLu1/Xpq0JHiOg+rPYK3UljYybG
|
||||
2V9KWNhYd2G5yg0+1ZzvaC3zEFIfQJpuESio6hEbilT6FLeVC8TabL0/2tqE12n/
|
||||
uWYU3Pr9AokD0OQkzN4BUswwIpYBfAXa6HLvj+V6tLOthxY0PLuOm7WiwU2MP0bz
|
||||
dq6LIFu0z8fkwBkkqXXtgSfCigqvRhybaKKF0FT4cdJUb0cfMhUshlzWpJ5EEskO
|
||||
46xDUok=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh
|
||||
MIIErjCCA5agAwIBAgIQBYAmfwbylVM0jhwYWl7uLjANBgkqhkiG9w0BAQsFADBh
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
||||
QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT
|
||||
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
||||
b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
|
||||
MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc
|
||||
oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo
|
||||
lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj
|
||||
pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h
|
||||
yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n
|
||||
wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M
|
||||
pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf
|
||||
BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw
|
||||
HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
|
||||
AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
|
||||
Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
|
||||
Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
|
||||
/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
|
||||
MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B
|
||||
SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW
|
||||
M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV
|
||||
4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ
|
||||
sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy
|
||||
rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg==
|
||||
-----END CERTIFICATE-----
|
||||
QTAeFw0xNzEyMDgxMjI4MjZaFw0yNzEyMDgxMjI4MjZaMHIxCzAJBgNVBAYTAkNO
|
||||
MSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMR0wGwYDVQQL
|
||||
ExREb21haW4gVmFsaWRhdGVkIFNTTDEdMBsGA1UEAxMUVHJ1c3RBc2lhIFRMUyBS
|
||||
U0EgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgWa9X+ph+wAm8
|
||||
Yh1Fk1MjKbQ5QwBOOKVaZR/OfCh+F6f93u7vZHGcUU/lvVGgUQnbzJhR1UV2epJa
|
||||
e+m7cxnXIKdD0/VS9btAgwJszGFvwoqXeaCqFoP71wPmXjjUwLT70+qvX4hdyYfO
|
||||
JcjeTz5QKtg8zQwxaK9x4JT9CoOmoVdVhEBAiD3DwR5fFgOHDwwGxdJWVBvktnoA
|
||||
zjdTLXDdbSVC5jZ0u8oq9BiTDv7jAlsB5F8aZgvSZDOQeFrwaOTbKWSEInEhnchK
|
||||
ZTD1dz6aBlk1xGEI5PZWAnVAba/ofH33ktymaTDsE6xRDnW97pDkimCRak6CEbfe
|
||||
3dXw6OV5AgMBAAGjggFPMIIBSzAdBgNVHQ4EFgQUf9OZ86BHDjEAVlYijrfMnt3K
|
||||
AYowHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDgYDVR0PAQH/BAQD
|
||||
AgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAG
|
||||
AQH/AgEAMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3Au
|
||||
ZGlnaWNlcnQuY29tMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwzLmRpZ2lj
|
||||
ZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RDQS5jcmwwTAYDVR0gBEUwQzA3Bglg
|
||||
hkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29t
|
||||
L0NQUzAIBgZngQwBAgEwDQYJKoZIhvcNAQELBQADggEBAK3dVOj5dlv4MzK2i233
|
||||
lDYvyJ3slFY2X2HKTYGte8nbK6i5/fsDImMYihAkp6VaNY/en8WZ5qcrQPVLuJrJ
|
||||
DSXT04NnMeZOQDUoj/NHAmdfCBB/h1bZ5OGK6Sf1h5Yx/5wR4f3TUoPgGlnU7EuP
|
||||
ISLNdMRiDrXntcImDAiRvkh5GJuH4YCVE6XEntqaNIgGkRwxKSgnU3Id3iuFbW9F
|
||||
UQ9Qqtb1GX91AJ7i4153TikGgYCdwYkBURD8gSVe8OAco6IfZOYt/TEwii1Ivi1C
|
||||
qnuUlWpsF1LdQNIdfbW3TSe0BhQa7ifbVIfvPWHYOu3rkg1ZeMo6XRU9B4n5VyJY
|
||||
RmE=
|
||||
-----END CERTIFICATE-----
|
|
@ -1,27 +1,27 @@
|
|||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEA41db8f4FGzOBQEtIy/vBKJiPJe9b6KFNTTmh6aAHhDhRGlTi
|
||||
8Jgezmz1obJeG29s/qQOtPNd+tG87uHeOmbEVeOSGOWGnzC2khfhZ7CmR3NXW9fM
|
||||
qetBkiEyaBCK6g1fnJsGgZXHYLzotDM3B6aAL+cia2q8GI9rK7jX2/lobusjxmPm
|
||||
RJiVSj3DsUuu3JJARcn9MnwXIvtLGIdXEzcRsf6CEp7vG9vdHdhtB3CCAfBpqWQX
|
||||
K0Lbx16ufY08IS9LKF97OGbDCEGZR1Z1FWHxBspfdIt6bfVhq2g3CB9wtZeJxufr
|
||||
u17IgbTwIXSx1CKevigHF1/jnkj+V7/gp9iDewIDAQABAoIBAFH6kAjQ2WWIKp0V
|
||||
KMCJ3Yr2jHQY/rMB636kACtfTiaTKkfNAXLR4BX++4pd6AqLoSmn3jfJJIQMOs2H
|
||||
fFvh7/2qzOWWavefmM5QtzLtY+CTCpbvV/mUAHah6uvUv0sMHIS78FotORK8vEsy
|
||||
xq7HDyV2+xXyDLbsjLBc/NXxd4O7L9i6+6VrFFX4efowedLdudWG2GXyrq/6xT6E
|
||||
0G1aDI1ViYoCYiP/Rm1ET8qVhtHBiQ2rHIYsTdUhkMubT29AvDBaxyi+syyeXmLu
|
||||
W/ZafdP37hm2f0DQXmlRr7Wr0Cni8oOSFAZj7IFhxuWKCaMVPxTeAUSJfFqiUN2X
|
||||
cm9Tv7kCgYEA/gOAt3zrMezkqSWr+S5m5/i8ClBJvZJ6Yp/tMg6AR+W0GH94hFZC
|
||||
u/dtFPI7nPNHTp19YNq2/TTfA81PmQMOVvQbg9eH2016XY+x0Z6i1vKdMEqddkcW
|
||||
36hslgmY3cyXDL0WzZgX2aCl8uy8XViHkMaf1RPL10hqdXXcNoOOSPkCgYEA5R52
|
||||
T8bn3spBSfaKooTwrHj2Varxxo9KbypJo0OzOFF5zPwJdypj9BCI9ajVnkIVjsSv
|
||||
snBdB4qoM/IYluXc2E801Ub+SbY+jx6HJemTy/zKqr1nJABlZcp1KgyQfMhUa4cA
|
||||
iqMJX3ggR7xdph73kW3s4eKeGLc5kkUQMQUpIRMCgYAVWS4EPdd2hrZhEO13L9Mu
|
||||
Q9Vp+H16FUl76H0C6/0UDdYpCO2UEbviGFVuoT0pX7jqfon/DeK7PSpRI3xBG+Sk
|
||||
ojd9ySt93vEd0+nZ+D8vWYykdmDtg+QEQB+ALKZQXdWEGJBGDzZR8BKCbCsYnUwn
|
||||
esoMGnHTUh7AaHttiXj34QKBgQCu4bR+qhz74bc55FPnPr+RdfbYZtWKsH6pIUb5
|
||||
tkgKua3Vd58l9RY8CY7wq4D5/gkEYz6UXc20XvKKS8TXEPajqLlz/W9FBjTz+uI/
|
||||
Xu0v63EqJ82dHixHKOSLRvHWPPaq6G3SZCVYWJGTD8UPcl2XBKelttrjlJ799Xcp
|
||||
Y34EPwKBgQDrPDgphCWQos/62qQ2NW0qpxphItlCM/w/j0s8Ff2qT82NKIM3Nr7U
|
||||
Ol9Fm0m4FepvryunWiAF+pD7m+SDAI1abm3MN7QB653w+2zu9B8mY0jU+uFjGCUQ
|
||||
5uFXsTgbnAYev5V9fCKGRPwHXEIJsidg1jOpc5pGnOvvlTZ+uno6Gg==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAu5QSBTQbToLUu4wCYy/BNoinqFkXiTZEaV6/5PJIeNsz75fn
|
||||
AEuBpIATEHqRsY6L9HdYAvBiAEv6ufCZhzwWF7ph1ZMhg6ulfoaQwoVCkbKi/zgw
|
||||
i3tvteda5vXQs4e8GvgZ6zkabQ4cZFjVpb3dA6huBbs20jLfYYXsXWsJEGF3JK5o
|
||||
kQ08+u/h/q0lFDFa70S9hpQXMtSfCCW/AuEc/+tG7rnUul1oMXjpVnDOmg+CZfIY
|
||||
gi9D30/zd1DYFJOEwawl5FKLFQY7TOn3RlZ3SR4mNbbhIgHPL9S1xHGcm8UC7PKu
|
||||
Ogh8+5Nl0aeeUB1liuzM/w5JbF4L4FoZW6ciNQIDAQABAoIBAAEnd9Xq3GknAm6V
|
||||
/bTFCDQQ8rElPTEVsaWRVO5wdDQ0KxVkEqKMlGNh+1wMWQWl6iQKsPKxrnSwgv4u
|
||||
Zg9wNfWW6r+w7FGeVoIZC157Ce4SEpEt9BSDoawVnJhTtmFIakajNKufGhPGNLQE
|
||||
XOosaSX63RRxcrSn5fp4Y7wuaqucXzPV3MuRABrDTHugW1O37570HLwvY9Hmf2+N
|
||||
WIqEasCjeZ575EwTcqqVwB/j3BNqyrbkxP6aFszxYdMvlK/mpPhrShV6+QmuP02j
|
||||
OvRt9HM8knUVzsGJzuDk5V5VUGejih3VZO1BuqP1LFb1j4siWBoKpVQrP0wSJzaa
|
||||
5Vru/wECgYEA9SygrrkPESbjSLYIJU4mRmC4zSqbUoWpvTgpK29nNmif7BSJ9bRr
|
||||
2QSCIho58a0bl3a7GLwY0dnEyDYKF9nTQ8HqlkvwRwxdMql+0hU0o5hOBnljYoyM
|
||||
BBptFvoihCe2se+1FEQkunAFCDph00S5utz+8uTlHSFiSy/fQ4GOZwECgYEAw9xl
|
||||
kZOPSGNEd69F9gtkOAT0kWuazvePSoeYNldZ/MZyE0zE4Wyh5Dk8y5cBt3Pw0ZTr
|
||||
NN1dc24EkjcFIBop4Me5n5zKr4rH1XKsUQ2jaTurp/fVQwGo820n+ChO8cIEobHY
|
||||
p6wmKopnnDKOATMjZd8hg+Gck7qWoeTxk3XizzUCgYAFGGJWfz4S6y36Ct5seA1P
|
||||
lR8CFIqZ0nFOn2YrousQNGhubZbYZmF/ZxqVPtpJbYGPSkZlIzOY2N/AEW9wQ3Si
|
||||
idsoOHfL4jPlo6QhFZO8eqPUep1YJPeb9jiiK5ygBntDg2nN/ASPY1iXbS8vRtRd
|
||||
T850mdExI8p5KYuISZ7+AQKBgHF/ENhoErqW04ErbzYh6cRQksyF92KBsGY25uxu
|
||||
d/XzpP0sGlaq1bFjvagYbGU7aUx5qEatFE8kbL+x5GVy49uewSEOAaHxoNU+qz4Y
|
||||
0h3T9yfRhKJcnuPY2DWEXiLYFEkCvxKCvmceZuXrocBuOs/4mfpLTamJkWplOdwC
|
||||
jxkVAoGBALU/996M9frxtjvzQdF3ncbKrDcptZN6s1hIBVk1t2PzcT0XgiOUZRqj
|
||||
jvUqZWg7MV6kovdjg7N2KSE0u9p2nysL4ejvZRKMNNBdaFJvOUcaYCMTHok1KfXp
|
||||
Bq75mMgfFLrY+huWzKdRWkEjqD6A05Us48iuikW5Ec32sI6mUzg9
|
||||
-----END RSA PRIVATE KEY-----
|
|
@ -1,59 +1,61 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIFlzCCBH+gAwIBAgIQDXgUgr0IFkhSkGrfB3BoCzANBgkqhkiG9w0BAQsFADBu
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
|
||||
RFYgVExTIENBIC0gRzEwHhcNMjEwMzA2MDAwMDAwWhcNMjIwMzA2MjM1OTU5WjAp
|
||||
MScwJQYDVQQDEx5kYWlseS5hcGkuZGphbmdvLXZ1ZS1hZG1pbi5jb20wggEiMA0G
|
||||
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIoHO8FAq7byt+gDDP2/QjOm/8YSFO
|
||||
s+AC0iyhMLx6NDRh9cIJE4U/VVpUrbXKspgO2lVN9c3Z28EhimgTj8wLl4uBXAHg
|
||||
mYS6KZSY1qewN6zagijo0uhI6qSuc+Qr4hZkTrVHhhdIM7G7z7+nMDovLcfZheyT
|
||||
+0emMhqrO5Oroq/+Ym0jbqBY7tLp7ODxdiG7ONNkIgR/t0cK1P5j16h97LUTHvJS
|
||||
QbXd9JpGROWQArwB7bthyW+BjOc8y/z5jyiE0wrrzcDoc707T2855VzeYnoJ/1t/
|
||||
zNdTpJ/VtM6jk5NjqlqHZE7IPNUPdRQ3ysftVAgoHh/R+UtUs1LheUMbAgMBAAGj
|
||||
ggJ0MIICcDAfBgNVHSMEGDAWgBRVdE+yck/1YLpQ0dfmUVyaAYca1zAdBgNVHQ4E
|
||||
FgQUtkEWynD115BC1cCt+dVbYMINNIEwKQYDVR0RBCIwIIIeZGFpbHkuYXBpLmRq
|
||||
YW5nby12dWUtYWRtaW4uY29tMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggr
|
||||
BgEFBQcDAQYIKwYBBQUHAwIwPgYDVR0gBDcwNTAzBgZngQwBAgEwKTAnBggrBgEF
|
||||
BQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMIGABggrBgEFBQcBAQR0
|
||||
MHIwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBKBggrBgEF
|
||||
BQcwAoY+aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0VuY3J5cHRpb25FdmVy
|
||||
eXdoZXJlRFZUTFNDQS1HMS5jcnQwCQYDVR0TBAIwADCCAQQGCisGAQQB1nkCBAIE
|
||||
gfUEgfIA8AB2ACl5vvCeOTkh8FZzn2Old+W+V32cYAr4+U1dJlwlXceEAAABeAiA
|
||||
1B4AAAQDAEcwRQIgJNPwwa2Ckt6jT4iZkg+j7K4dx7Ilg6eo9lITNtas+jwCIQDU
|
||||
6aY1CbJZQJCfgPbx61LGz6we0rSmw9KLukq2TFJlZgB2ACJFRQdZVSRWlj+hL/H3
|
||||
bYbgIyZjrcBLf13Gg1xu4g8CAAABeAiA1HAAAAQDAEcwRQIhANyqViocLYtbkecx
|
||||
QnhZyr8LIHPq9Uw3RuiN21RPxY84AiBACIPopJaybo6lQhgQGFVwKayEP3ba+QTK
|
||||
E0REYDfHAzANBgkqhkiG9w0BAQsFAAOCAQEAHaYxBQYKYOpdJ3vEGX7ExR+kTjNM
|
||||
83r74xAwV2nhbXIsTE0fwuwK7wGPzVyjVpqypIs93/18ehLhTF2Nr4dwloMMfsC+
|
||||
HWM3mvtb6Y8v5xZ5duZuOeUUlSPlAniygFWB7XuBHJti01YtiwyRxtvELLk3pv3T
|
||||
W2B0NNajfWPqhSm2IShnOL2sxD2OKvDXIKwAjbDRjOTQlkZgH6UocvtKE0REXym7
|
||||
RHaujJ+fhWwtOqhkshmtWQSha9J4r2/X4v2uS8VyvJ1Lr+UwnxWeYlQ0Zz6Xgqtc
|
||||
b0SD3GvHsA1mxnZJ0oPj3VA8MQkpMJtUjiNPypEjN4YH7UK+B5zXhoAB2A==
|
||||
MIIFrDCCBJSgAwIBAgIQDw9E1qRxoRsSagKtIUbGJzANBgkqhkiG9w0BAQsFADBy
|
||||
MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg
|
||||
SW5jLjEdMBsGA1UECxMURG9tYWluIFZhbGlkYXRlZCBTU0wxHTAbBgNVBAMTFFRy
|
||||
dXN0QXNpYSBUTFMgUlNBIENBMB4XDTIxMDMyMDAwMDAwMFoXDTIyMDMxOTIzNTk1
|
||||
OVowKTEnMCUGA1UEAxMeZGFpbHkuYXBpLmRqYW5nby12dWUtYWRtaW4uY29tMIIB
|
||||
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyijP5M9nLFbIimHuhYl4cK7C
|
||||
e4SewgiERRThx+4/iLzFKMVHpSQ0GgcSN7e6tLlfgMzRcUbAnUsia4bzcp0UG+w0
|
||||
Ny6OrFF7XuU71YQ3B+35NpfAvJGr7pw71aFpl1l+jz9iym4iw6yN5F8poq6TR7Gl
|
||||
PNhX1YWZ+Wy0MCDnvQ00MBsQ/42CGEPzE6ZdKJ3l19NY/9/djnxZE+OgMVR3cdCI
|
||||
I/Et0mahIWYaPGP14/nIzNfOcEZtJMHmgSGF/l9NyUdsrRRK7ltV87YWeU86e2Da
|
||||
hqW9v0oSOLepOzg4PB4wU2IJfykRMXfJNUG6iWjOMVPdqIFTXjJZvtvZg5J4GQID
|
||||
AQABo4IChTCCAoEwHwYDVR0jBBgwFoAUf9OZ86BHDjEAVlYijrfMnt3KAYowHQYD
|
||||
VR0OBBYEFOqwsoYN4FxXPwL2my2kdh/PuVB4MCkGA1UdEQQiMCCCHmRhaWx5LmFw
|
||||
aS5kamFuZ28tdnVlLWFkbWluLmNvbTAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYw
|
||||
FAYIKwYBBQUHAwEGCCsGAQUFBwMCMD4GA1UdIAQ3MDUwMwYGZ4EMAQIBMCkwJwYI
|
||||
KwYBBQUHAgEWG2h0dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCBkgYIKwYBBQUH
|
||||
AQEEgYUwgYIwNAYIKwYBBQUHMAGGKGh0dHA6Ly9zdGF0dXNlLmRpZ2l0YWxjZXJ0
|
||||
dmFsaWRhdGlvbi5jb20wSgYIKwYBBQUHMAKGPmh0dHA6Ly9jYWNlcnRzLmRpZ2l0
|
||||
YWxjZXJ0dmFsaWRhdGlvbi5jb20vVHJ1c3RBc2lhVExTUlNBQ0EuY3J0MAkGA1Ud
|
||||
EwQCMAAwggEDBgorBgEEAdZ5AgQCBIH0BIHxAO8AdQBGpVXrdfqRIDC1oolp9PN9
|
||||
ESxBdL79SbiFq/L8cP5tRwAAAXhNdRxuAAAEAwBGMEQCICntYjFg4csRL4bxiJvr
|
||||
ma95JmMzYRrLx84UgLbd1iWhAiB64xH69vjCf4JfVB+3G1UN6G4pphW4m/nYBA2E
|
||||
ElFuIgB2ACJFRQdZVSRWlj+hL/H3bYbgIyZjrcBLf13Gg1xu4g8CAAABeE11HF4A
|
||||
AAQDAEcwRQIhANsjDO2cASF5sGZCyjS8jz9qA+5N4WWFxG+tO4VyELjtAiAIqurr
|
||||
QbHF9fkBFDg995q5eR16ncpS1d75a0Nhis62PjANBgkqhkiG9w0BAQsFAAOCAQEA
|
||||
DADo2zekDxm3zbuHGAlQR17h4BtD3tRDy58J58L5CnL+VhNLAN2Fp4AQF1w4a4+z
|
||||
89ZFOKn+RcwSwyYDFHqsKYa7QYL97z7GJ1ASPG79faO5osbo1SOrSdwzIjjUnSD5
|
||||
V4Fr0Fw6NYkq72pJPZkPEeivGEG3MvhzTaFSTwkylDVx6wxzaPY/p9WJpbopKN/8
|
||||
+2WSM0b6UB1cuOgfJlhcqYYFqAPO/2XLY60uPpKgboPFAznT8T2QSaYd7JXHndYJ
|
||||
IgTtXPr7hPOeXP9kDdUycCf3WOjp00gSk/guSujW4ZEaqCrJOkiMCbOrgyCIF7AK
|
||||
pzwp4H5aJpzHXqObsb5n3Q==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh
|
||||
MIIErjCCA5agAwIBAgIQBYAmfwbylVM0jhwYWl7uLjANBgkqhkiG9w0BAQsFADBh
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
||||
QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT
|
||||
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
||||
b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
|
||||
MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc
|
||||
oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo
|
||||
lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj
|
||||
pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h
|
||||
yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n
|
||||
wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M
|
||||
pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf
|
||||
BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw
|
||||
HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
|
||||
AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
|
||||
Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
|
||||
Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
|
||||
/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
|
||||
MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B
|
||||
SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW
|
||||
M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV
|
||||
4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ
|
||||
sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy
|
||||
rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg==
|
||||
QTAeFw0xNzEyMDgxMjI4MjZaFw0yNzEyMDgxMjI4MjZaMHIxCzAJBgNVBAYTAkNO
|
||||
MSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMR0wGwYDVQQL
|
||||
ExREb21haW4gVmFsaWRhdGVkIFNTTDEdMBsGA1UEAxMUVHJ1c3RBc2lhIFRMUyBS
|
||||
U0EgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgWa9X+ph+wAm8
|
||||
Yh1Fk1MjKbQ5QwBOOKVaZR/OfCh+F6f93u7vZHGcUU/lvVGgUQnbzJhR1UV2epJa
|
||||
e+m7cxnXIKdD0/VS9btAgwJszGFvwoqXeaCqFoP71wPmXjjUwLT70+qvX4hdyYfO
|
||||
JcjeTz5QKtg8zQwxaK9x4JT9CoOmoVdVhEBAiD3DwR5fFgOHDwwGxdJWVBvktnoA
|
||||
zjdTLXDdbSVC5jZ0u8oq9BiTDv7jAlsB5F8aZgvSZDOQeFrwaOTbKWSEInEhnchK
|
||||
ZTD1dz6aBlk1xGEI5PZWAnVAba/ofH33ktymaTDsE6xRDnW97pDkimCRak6CEbfe
|
||||
3dXw6OV5AgMBAAGjggFPMIIBSzAdBgNVHQ4EFgQUf9OZ86BHDjEAVlYijrfMnt3K
|
||||
AYowHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDgYDVR0PAQH/BAQD
|
||||
AgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAG
|
||||
AQH/AgEAMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3Au
|
||||
ZGlnaWNlcnQuY29tMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwzLmRpZ2lj
|
||||
ZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RDQS5jcmwwTAYDVR0gBEUwQzA3Bglg
|
||||
hkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29t
|
||||
L0NQUzAIBgZngQwBAgEwDQYJKoZIhvcNAQELBQADggEBAK3dVOj5dlv4MzK2i233
|
||||
lDYvyJ3slFY2X2HKTYGte8nbK6i5/fsDImMYihAkp6VaNY/en8WZ5qcrQPVLuJrJ
|
||||
DSXT04NnMeZOQDUoj/NHAmdfCBB/h1bZ5OGK6Sf1h5Yx/5wR4f3TUoPgGlnU7EuP
|
||||
ISLNdMRiDrXntcImDAiRvkh5GJuH4YCVE6XEntqaNIgGkRwxKSgnU3Id3iuFbW9F
|
||||
UQ9Qqtb1GX91AJ7i4153TikGgYCdwYkBURD8gSVe8OAco6IfZOYt/TEwii1Ivi1C
|
||||
qnuUlWpsF1LdQNIdfbW3TSe0BhQa7ifbVIfvPWHYOu3rkg1ZeMo6XRU9B4n5VyJY
|
||||
RmE=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpQIBAAKCAQEAyKBzvBQKu28rfoAwz9v0Izpv/GEhTrPgAtIsoTC8ejQ0YfXC
|
||||
CROFP1VaVK21yrKYDtpVTfXN2dvBIYpoE4/MC5eLgVwB4JmEuimUmNansDes2oIo
|
||||
6NLoSOqkrnPkK+IWZE61R4YXSDOxu8+/pzA6Ly3H2YXsk/tHpjIaqzuTq6Kv/mJt
|
||||
I26gWO7S6ezg8XYhuzjTZCIEf7dHCtT+Y9eofey1Ex7yUkG13fSaRkTlkAK8Ae27
|
||||
YclvgYznPMv8+Y8ohNMK683A6HO9O09vOeVc3mJ6Cf9bf8zXU6Sf1bTOo5OTY6pa
|
||||
h2ROyDzVD3UUN8rH7VQIKB4f0flLVLNS4XlDGwIDAQABAoIBAATB2TyydPaw0iUz
|
||||
wPSM0KMtNY6Udwe4uC0Y8rn3v+Bd8IgKHcm9TsGLspKjc9YUmgpwHum0VGdAELpM
|
||||
397m3/2+YC53EgxTV5RafA2LuXoyN8UOpQ2wQpXICpOgZ96qg8FpJF9HzLGHmEVN
|
||||
zcuXFyobOcvsowl3QeGs+njo9r1xGVCZVo/c+XT95vU+o4bIeao5MyseVg7LLgXC
|
||||
EsTJIVLaRK3WDCaZAegXoiVJQlgLR6qWrY+97E2yxCIAVZejdiPiejwT3i5XEsxT
|
||||
w11FdaZXrCKYktid1b74tDwpHTSekevKWrzrT2QkgGv3VJfGHcvDeeQpyYGE13nd
|
||||
IsyTynECgYEA+8JfXOL3hXRBOSZJYysLkIYXhiPw/P8Ao69pgRDEKaA2YSoojHnE
|
||||
Rzo+v4cHw0x47WzLkjs/xf1ON3jBEEZ/2KG+FDpRXieC19xfvlEe1tf9RaFfdU0E
|
||||
R2n059d8R3CC7M+nMEwfkYZ9OtV1SSeQlf6GyhBT3XmLlnRMKWbwRh8CgYEAzAGW
|
||||
edCFYmTyzFBjxq8GARzvptCU/sAZBBFF18mz7jsFJhidxZ2nMS0tFZIy+yvg1dpE
|
||||
ElkILAzMt4v0lmHWBTRcHCllnAwu+o5JsBR1pqzj+Q84iWurgkWI+MG0g56CjyBS
|
||||
exJn8RL7JNt7QNUiiz1WB8oWa/knXXM/L8kui4UCgYEAsGWlabDBm2k0VfWkj+5W
|
||||
IQJDM0K1lJ6bdRTvyHXV7BCMaZIfbSXYR8vgsVPMNaO8Sybij+ghq/jqt+VM6Lls
|
||||
1H2ncAbYgi8O9246S2ANSp11oTcLamX3LI5qAZOzSV7k7UYlr6p2qAFidzme/w3Q
|
||||
ubfn+2ZrTI/gJSABSTUN/yMCgYEAq7UWa1dIPWYMOk3bfSppmlw5liVvkvAq3hKP
|
||||
v62kxXplvgfwG5mzVJ/al5JjWKc46aZ5rxvC1hi74i1pY33bfqvwbz+kp3BVxkwm
|
||||
146Q7AYPJ91Yz8mRJOfT/tRDVJkA+OjSo4X9eJpqSj52Aj6igaHRnGLK9nxSVsSe
|
||||
xWDGzWUCgYEAsk02rZvSc0XiddlQQ5vGNVezikbqtmrwQf32EUuxI8jklY6Ry7/M
|
||||
BQA46J4psF0xtH93MV5Dsz5HqyJM6OPeQ4ONlCYrhZ1yHHti+YFivKtUdeZCPkn7
|
||||
ygz3P8kQhLlNtFomXqFK787jlC1rZuTC5IXA4SL5zq4ThWh7vnb65Sw=
|
||||
-----END RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAyijP5M9nLFbIimHuhYl4cK7Ce4SewgiERRThx+4/iLzFKMVH
|
||||
pSQ0GgcSN7e6tLlfgMzRcUbAnUsia4bzcp0UG+w0Ny6OrFF7XuU71YQ3B+35NpfA
|
||||
vJGr7pw71aFpl1l+jz9iym4iw6yN5F8poq6TR7GlPNhX1YWZ+Wy0MCDnvQ00MBsQ
|
||||
/42CGEPzE6ZdKJ3l19NY/9/djnxZE+OgMVR3cdCII/Et0mahIWYaPGP14/nIzNfO
|
||||
cEZtJMHmgSGF/l9NyUdsrRRK7ltV87YWeU86e2DahqW9v0oSOLepOzg4PB4wU2IJ
|
||||
fykRMXfJNUG6iWjOMVPdqIFTXjJZvtvZg5J4GQIDAQABAoIBAFYjOqXXe7IoTi2s
|
||||
mbnbf+6fgC2qLg0mHNnkkmmiif7E1EtRd/wVJ4AZmDkWd57ux5M1cl6OU58R9xoS
|
||||
9+NTq9BT/lGu7ErfMy6VhT+upNYjn4cT9SND/Jrghhw6OSgskWEPFJSFhhmTCiiP
|
||||
Jcn0EbxAJNR+qDpKQXfGSiahtqxV01kNRU/j6YmVrQEoVif/9+LJmcs5Uy+gqA4a
|
||||
fQou8/QQjrmPHPOSSWZ8aZlPNt89+E4P+XIkf4rPxD8lrWd2ufDeCdm1As4qYQQD
|
||||
c/eeBh6qkrKijZZ8NRgonTaCYPXkkkHME4BgdP2gVCW/KMVfdM5pVVk7dctSs+6w
|
||||
VFfF5CsCgYEA/pXLQXt6PUlJAVSFodK8CndZY1pAbzLNVTsDAVuEAepwmEL7Tw0O
|
||||
nV4igsANdRxZxEdYWsY8CClNTNLNY92zaAbpsQXHxHqnXnl2ZGQi1Jb2eFR6zw+m
|
||||
8Qyb6aca58Q95flHQY75/+IFWemj76p1aT7aIvpElMdkBUh1Ak92cv8CgYEAy0hu
|
||||
MqJga0/3UoMLhjhUVWGXI6NBpvWNv7FqSeQ2SDj0iBib7nyrlP41bCcyHFXryrXf
|
||||
YsbG4fq0mmyhQUz4++OP57lxXXBu3UvBd6qQUorWX9HVHy6ljun8PsJdNUGj9Q2v
|
||||
arH6Rv/emIx86IAOGjgIgK+YiNwiw/uEYgNzTOcCgYBryjh4zTMAZ9sFOSgrT/JV
|
||||
7Bpounm1myjdAVNQa9MEjKKHlTSaT8j0UDsEaRRJlWtcc2ixZmVcf0A/WrGjquaf
|
||||
EO45CV1/jv72PS8nak5k/FX2tK4apWHlhZUt5Ja7spcSm+zTkRnAgY4Kd6X1f5Ke
|
||||
sQHi9Vu8Mn/izL7d748TOQKBgH75txuZoXBmeq3nfQNRnBvY4Xc5OoD3UJs0Tpfp
|
||||
HJ7wNI3uETheVy6xutzbfsmEQcxU3jvsvb3Zw4XR5MfNNJjiA7lSdCVRXW6NK0N8
|
||||
HrnwTwd7IgxgLrmeHhl1fpMNdURUUAXtNc+zc28GEd+IXUazSVxYUobqOi0Apigy
|
||||
z4pxAoGBAPKd+WMUS94Ne7WMHDzcCcQKl2dJmBVj036qCtPgUL4yDyRDc/H1fQxI
|
||||
jr/+JueqktrJgJsOL4uygn0zzKIJyQIToufxOodUdmviRLaH2UskNUBUjIBqyDc0
|
||||
pjPebC7sxg6HZQmVpgX4klj1IWDpudD+cCRGF9SIzKRvNEadLgOl
|
||||
-----END RSA PRIVATE KEY-----
|
|
@ -1,59 +1,61 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIFmTCCBIGgAwIBAgIQCzI6tyKHzyI4bN6BJiBWZzANBgkqhkiG9w0BAQsFADBu
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
|
||||
RFYgVExTIENBIC0gRzEwHhcNMjEwMzA2MDAwMDAwWhcNMjIwMzA2MjM1OTU5WjAq
|
||||
MSgwJgYDVQQDEx9kYWlseS5kZW1lLmRqYW5nby12dWUtYWRtaW4uY29tMIIBIjAN
|
||||
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwd2udVfp+a/7oaVwqOxQeu6hqcLY
|
||||
78tdYoz20XJZN9/LmTFxRoOm/FT773gJ90Ot/TfiAVuxfhfNXSS6fVGdRi0DIMW8
|
||||
OReUwmLtDCD87xz2LNjMz73/am1FYchUEIXc1R9mME2DOHozGuK1qhF9T2YM9jkU
|
||||
JL92OQ4eJ2EzbPLrXYoWFJIr050OT21xtgoTNlzi/+JqE8xuEDihjtsziT7KzgZl
|
||||
5cSsJ7WAEio68oEXHhxPF4Xp/ziRDnmNA1Qd5+BZU/jUsQmDsMWAOpkV8EYG8GYI
|
||||
AVSr2TegtSgrS7eXxFh0JsfpSbY2x1Og15IwU3WIo18kEnUz5jNpfL7miQIDAQAB
|
||||
o4ICdTCCAnEwHwYDVR0jBBgwFoAUVXRPsnJP9WC6UNHX5lFcmgGHGtcwHQYDVR0O
|
||||
BBYEFNIBagOABbLoxHlUOLebkahQPO5tMCoGA1UdEQQjMCGCH2RhaWx5LmRlbWUu
|
||||
ZGphbmdvLXZ1ZS1hZG1pbi5jb20wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQG
|
||||
CCsGAQUFBwMBBggrBgEFBQcDAjA+BgNVHSAENzA1MDMGBmeBDAECATApMCcGCCsG
|
||||
AQUFBwIBFhtodHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwgYAGCCsGAQUFBwEB
|
||||
BHQwcjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEoGCCsG
|
||||
AQUFBzAChj5odHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRW5jcnlwdGlvbkV2
|
||||
ZXJ5d2hlcmVEVlRMU0NBLUcxLmNydDAJBgNVHRMEAjAAMIIBBAYKKwYBBAHWeQIE
|
||||
AgSB9QSB8gDwAHUARqVV63X6kSAwtaKJafTzfREsQXS+/Um4havy/HD+bUcAAAF4
|
||||
CIG3RgAABAMARjBEAiB5Ba4CnxlhBvIQo3CPXbMhIxpT+Z4ujAD87mL4yD+rSgIg
|
||||
WYu1d9u1lEIzth9PXL1U1O2H6gMK1pO+tLhUmkBIt6kAdwAiRUUHWVUkVpY/oS/x
|
||||
922G4CMmY63AS39dxoNcbuIPAgAAAXgIgbdSAAAEAwBIMEYCIQD2rqMSWMVQSyep
|
||||
vkZ39MuKoNfZ3nfKYAJ1XB8awJLj6QIhAJEIOcdX9QhVH8pB8jr/HrInLzTt/BOT
|
||||
ArfsR+J/aqyVMA0GCSqGSIb3DQEBCwUAA4IBAQAcH2NGwZ4yAiOvXXP5W5+/9CHw
|
||||
EA9uyDx8LY0UoPzxUEuk6zHtZ+0nj9JvitH6UUhfP5qV+gzzSEIPnZePCf9VI6Y4
|
||||
F6yCYU5baV/vv2w+ccZSADY7YMm/NadECWX4hhvhZRLRyShSuN2GceWj1hTWrT7S
|
||||
o9ZQ35KH5JcTL47VgoXgNNwIEqaJfAsTuFlAAn96DXzfS4KicNhBoAUTPW/VZn18
|
||||
hG+G23tAWSwBkN2PTkLOnHMV+qmEKRIjH+eTxe5+XWY5KrmYH2am3eK92DiMAaI4
|
||||
qaOAEhIN1RmIITZxgFfChaTadwR7jY27hG5HkvwRuV+fhsYnfYMiJUnoN34j
|
||||
MIIFsDCCBJigAwIBAgIQBbQIKLDxaNeKW6HjUJCFNjANBgkqhkiG9w0BAQsFADBy
|
||||
MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg
|
||||
SW5jLjEdMBsGA1UECxMURG9tYWluIFZhbGlkYXRlZCBTU0wxHTAbBgNVBAMTFFRy
|
||||
dXN0QXNpYSBUTFMgUlNBIENBMB4XDTIxMDMyMDAwMDAwMFoXDTIyMDMxOTIzNTk1
|
||||
OVowKjEoMCYGA1UEAxMfZGFpbHkuZGVtby5kamFuZ28tdnVlLWFkbWluLmNvbTCC
|
||||
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKAOwxsoKm4vH/gv8h7OHYHI
|
||||
5dQAAKm3tk1ZsyY9cMlSq/GIMSY15BZSwdSiwyI3vcCpmz2YCVRXpH8r0LNm/Ygu
|
||||
fjVeK1H+F6fQkGj7065ye1Z15PtgI6Dx9dhLlFlR3lZYm0MVwSIW2xgVqbL+WNKl
|
||||
198afnP+/B/Klzjyud4wqAlzDcD8lIh8iL0LMY3HSHzSzr8xtYZLxUvEzcl+vRF9
|
||||
a9GjTOgg01Ukk04zHXan7VInK1/lurQ+WuntfPFDe/jmlEid4/wvB/lCMi0KUSWd
|
||||
0C9CCB+2q/Lsa0hr8v4DF1TS1/YGg/y0Ye1+DzpKLKv/mfe6py18Ca7FcnFoKVsC
|
||||
AwEAAaOCAogwggKEMB8GA1UdIwQYMBaAFH/TmfOgRw4xAFZWIo63zJ7dygGKMB0G
|
||||
A1UdDgQWBBQ14z4HfGEjC4tAPVnN/AvsXmgHYDAqBgNVHREEIzAhgh9kYWlseS5k
|
||||
ZW1vLmRqYW5nby12dWUtYWRtaW4uY29tMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUE
|
||||
FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwPgYDVR0gBDcwNTAzBgZngQwBAgEwKTAn
|
||||
BggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMIGSBggrBgEF
|
||||
BQcBAQSBhTCBgjA0BggrBgEFBQcwAYYoaHR0cDovL3N0YXR1c2UuZGlnaXRhbGNl
|
||||
cnR2YWxpZGF0aW9uLmNvbTBKBggrBgEFBQcwAoY+aHR0cDovL2NhY2VydHMuZGln
|
||||
aXRhbGNlcnR2YWxpZGF0aW9uLmNvbS9UcnVzdEFzaWFUTFNSU0FDQS5jcnQwCQYD
|
||||
VR0TBAIwADCCAQUGCisGAQQB1nkCBAIEgfYEgfMA8QB3AEalVet1+pEgMLWiiWn0
|
||||
830RLEF0vv1JuIWr8vxw/m1HAAABeE1yhJEAAAQDAEgwRgIhAIdZiX5qq+KJjdtl
|
||||
2Z9ejh5o9VHKyVVUgkJb0+S8aQGlAiEA5nEVffySiTcUogz+b7n34hmG2aW3YO02
|
||||
UhMzyv7hoGcAdgAiRUUHWVUkVpY/oS/x922G4CMmY63AS39dxoNcbuIPAgAAAXhN
|
||||
coRmAAAEAwBHMEUCIDFWIi3mkGmkB/uuTCqJyPTz8/WS4vqvdAUWO+MuxuaoAiEA
|
||||
yP80fJCLnfso7VoJcWQT1l6bN6XL/jxip1OjXU0+dQMwDQYJKoZIhvcNAQELBQAD
|
||||
ggEBAB0vH0OMrwGOQHdRdaN9t+2Yc1xnBNcksHcCmVD09gO2clA06OqTiu77g8lw
|
||||
KwO2M5DmNFAA2onDxRVIL6auyLNdyK4X2m9i1eGnyAKro7d4owIlG30JdJ7uHzLG
|
||||
ROL9SR0ibNZwOhoKSfpy3a+fWngMjCdW8pAFJHfPbOf6lP/CpGwoBnLvm9a9ZG3K
|
||||
m2NmFN1/GPje25tXy0S/NaVFDVcJyfMeuVKqdwY9sbN7nOYGUury5NC5LWbgJ0T2
|
||||
KWLcZc3LCa791kHLWVt/KI+9UgpM6Xiie0jUUIU92NaxBD/wY/jybPiogJkAz/sl
|
||||
TncbnwO2+WpN6jIy9ccs8ogUMTQ=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh
|
||||
MIIErjCCA5agAwIBAgIQBYAmfwbylVM0jhwYWl7uLjANBgkqhkiG9w0BAQsFADBh
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
||||
QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT
|
||||
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
||||
b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
|
||||
MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc
|
||||
oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo
|
||||
lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj
|
||||
pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h
|
||||
yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n
|
||||
wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M
|
||||
pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf
|
||||
BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw
|
||||
HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
|
||||
AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
|
||||
Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
|
||||
Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
|
||||
/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
|
||||
MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B
|
||||
SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW
|
||||
M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV
|
||||
4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ
|
||||
sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy
|
||||
rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg==
|
||||
QTAeFw0xNzEyMDgxMjI4MjZaFw0yNzEyMDgxMjI4MjZaMHIxCzAJBgNVBAYTAkNO
|
||||
MSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMR0wGwYDVQQL
|
||||
ExREb21haW4gVmFsaWRhdGVkIFNTTDEdMBsGA1UEAxMUVHJ1c3RBc2lhIFRMUyBS
|
||||
U0EgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgWa9X+ph+wAm8
|
||||
Yh1Fk1MjKbQ5QwBOOKVaZR/OfCh+F6f93u7vZHGcUU/lvVGgUQnbzJhR1UV2epJa
|
||||
e+m7cxnXIKdD0/VS9btAgwJszGFvwoqXeaCqFoP71wPmXjjUwLT70+qvX4hdyYfO
|
||||
JcjeTz5QKtg8zQwxaK9x4JT9CoOmoVdVhEBAiD3DwR5fFgOHDwwGxdJWVBvktnoA
|
||||
zjdTLXDdbSVC5jZ0u8oq9BiTDv7jAlsB5F8aZgvSZDOQeFrwaOTbKWSEInEhnchK
|
||||
ZTD1dz6aBlk1xGEI5PZWAnVAba/ofH33ktymaTDsE6xRDnW97pDkimCRak6CEbfe
|
||||
3dXw6OV5AgMBAAGjggFPMIIBSzAdBgNVHQ4EFgQUf9OZ86BHDjEAVlYijrfMnt3K
|
||||
AYowHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDgYDVR0PAQH/BAQD
|
||||
AgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAG
|
||||
AQH/AgEAMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3Au
|
||||
ZGlnaWNlcnQuY29tMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwzLmRpZ2lj
|
||||
ZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RDQS5jcmwwTAYDVR0gBEUwQzA3Bglg
|
||||
hkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29t
|
||||
L0NQUzAIBgZngQwBAgEwDQYJKoZIhvcNAQELBQADggEBAK3dVOj5dlv4MzK2i233
|
||||
lDYvyJ3slFY2X2HKTYGte8nbK6i5/fsDImMYihAkp6VaNY/en8WZ5qcrQPVLuJrJ
|
||||
DSXT04NnMeZOQDUoj/NHAmdfCBB/h1bZ5OGK6Sf1h5Yx/5wR4f3TUoPgGlnU7EuP
|
||||
ISLNdMRiDrXntcImDAiRvkh5GJuH4YCVE6XEntqaNIgGkRwxKSgnU3Id3iuFbW9F
|
||||
UQ9Qqtb1GX91AJ7i4153TikGgYCdwYkBURD8gSVe8OAco6IfZOYt/TEwii1Ivi1C
|
||||
qnuUlWpsF1LdQNIdfbW3TSe0BhQa7ifbVIfvPWHYOu3rkg1ZeMo6XRU9B4n5VyJY
|
||||
RmE=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAwd2udVfp+a/7oaVwqOxQeu6hqcLY78tdYoz20XJZN9/LmTFx
|
||||
RoOm/FT773gJ90Ot/TfiAVuxfhfNXSS6fVGdRi0DIMW8OReUwmLtDCD87xz2LNjM
|
||||
z73/am1FYchUEIXc1R9mME2DOHozGuK1qhF9T2YM9jkUJL92OQ4eJ2EzbPLrXYoW
|
||||
FJIr050OT21xtgoTNlzi/+JqE8xuEDihjtsziT7KzgZl5cSsJ7WAEio68oEXHhxP
|
||||
F4Xp/ziRDnmNA1Qd5+BZU/jUsQmDsMWAOpkV8EYG8GYIAVSr2TegtSgrS7eXxFh0
|
||||
JsfpSbY2x1Og15IwU3WIo18kEnUz5jNpfL7miQIDAQABAoIBABHmSOxWsKi4IfCb
|
||||
2NoP76JaFB0be3Iwga/Ouh8+gpRRGnhLg1zyXOGhax2CJNFqs07U8Q4VDD9LLU/z
|
||||
SzC072OCVm6ZMzbGQZrtDVv4U8I0F1qurcJklYebDTPpDjH0Wh5nZsUA8yOszLkn
|
||||
w4QvVzWUg4/cV0rJTr4X2priM6BUaAKGWe8BH1DX69K7jgSyvEZhSLN/aSxLJpwy
|
||||
hfL8OSBeVAwciyr0MqoqSoVgcYdcxtGt5dePezpQi6glXf2bMhxYv3692EsbOgh4
|
||||
eR24CO0xZJkp6AZN7BY4OaKwf3TmnJtIKg+ZhRwHTAMwHg9LDidsc/P1zMyvecPD
|
||||
RcRBYo0CgYEA/UqadAgNEmcoe8on9S0UtmPp1hXnh+z8EmvFHmZfSt/FxW1DHM0y
|
||||
c0hxsst/zIG8Q8B5W1HsLYbbBCvfG3RJDICbjBSRm+Aimz2HhIEtQl75YmXZ4srq
|
||||
jaiRsvXsbBjwr5Syol4XvZQH7TAYuZKKZbNTKayFVo6ADJMwgxBBe5MCgYEAw/Bl
|
||||
8kpUAnPOiAAzIr+sANd11trUUDRsTk0KCN6GJHWK8Q1O7ec5xjRjdffkOhKUloJJ
|
||||
UuarxJoNKwrAbfa63aOP8h5jqqqXk41+Trj94qlbzCjL+o7hfezGQeY8HxdxmDAf
|
||||
cBCLFGroND9aU7pCKATtIft5A7C09Gs1mpZTPvMCgYEAyFbFq5jinfex8ZeH20h4
|
||||
5XpJbeeNZdlv1zIei1j1bkdoKiuttY4npT9bjsuenabPvdbzJeO6JphPixEYOqLT
|
||||
VGw0m6t5MA0r0hXspkV2AtUT81wT5moQ81KtSxtwkF95n6bBU+OQa4Y2bshoBf9+
|
||||
L8qSsJegL0IuzcNtz3yADrkCgYEAo0qAG4j4NEcA0vSfqRDlrpnhWdpq4CCgNi0b
|
||||
9MJGNrJCxZsasUdnLZhRX2nkqMT9UeVoaA9XDPR5jupZ7gqWNsnt15Cd7QhYZB6i
|
||||
KccfxrrvhthlDf3vTDt8CkVuy1aFU5ifSoxu6+ggdhJqG6b5JVLdsNlbQ8kLNTr3
|
||||
pEotPCMCgYBmM0K9U1j4zO0L+/cpdDT8sYPpFUMdcEXCvLb/J9+v3kndbWhQbTyG
|
||||
UYulGyvmkTGpmYnwG5TEZbHroEI3qNG593Ae6AiUciKaTenH9f9HkWhIldJEua5g
|
||||
lKAA+18wOv5LbDFV4hUIaX4iDKBaKPiQu/Vi0HFy2SikiS+RUV10kQ==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAoA7DGygqbi8f+C/yHs4dgcjl1AAAqbe2TVmzJj1wyVKr8Ygx
|
||||
JjXkFlLB1KLDIje9wKmbPZgJVFekfyvQs2b9iC5+NV4rUf4Xp9CQaPvTrnJ7VnXk
|
||||
+2AjoPH12EuUWVHeVlibQxXBIhbbGBWpsv5Y0qXX3xp+c/78H8qXOPK53jCoCXMN
|
||||
wPyUiHyIvQsxjcdIfNLOvzG1hkvFS8TNyX69EX1r0aNM6CDTVSSTTjMddqftUicr
|
||||
X+W6tD5a6e188UN7+OaUSJ3j/C8H+UIyLQpRJZ3QL0IIH7ar8uxrSGvy/gMXVNLX
|
||||
9gaD/LRh7X4POkosq/+Z97qnLXwJrsVycWgpWwIDAQABAoIBABaP2NHdrhQnwWu/
|
||||
T8km3dhFz5vm6jECVrN9nE1yJhFtqBOH0qx5C+9Xor9iDXv9JoWKLaTCPI0ZPkoM
|
||||
4kI/wietrMMXb1IuAqX4YOWORgRrr9YmupdIBzhbPdVLsMbhzaPB9r+UnqEQXrmn
|
||||
ksB1WQ5MgWsPdYQit+XqrWQXgbrU9kAP5+aO2GKrlnWZqBgshUkd2Sq5rdgrK5nv
|
||||
kcmVBGClPsgOG2HgA+aJoFGLccoF8NMrBWaSc+zlHjiT8fP2YnMcDsX8Fw1tETbK
|
||||
P9jf9wd4b/2ezKL3TWJMkbTRnxBwDgARWFVrD9jZqLtw342YuGQnEhPJFFdepKpQ
|
||||
3GtbyiECgYEA0KlSF3K+coEjCjBGSFD5ACmB5ipl/NFPXVjCG1vHGHRh/0WnXBPI
|
||||
zY3pRHFr9cJKLxQPe+4085yFXGTV7GHhH4nd1tEVxrH8ouNok0/WL4HHtvfGOq/H
|
||||
sKQsZKVaUXd+NTZmzoXXJsb9Jgnu6r4AS4QazP1FRxSbSToxbut1ezsCgYEAxF6f
|
||||
mAFz9p5ptNStJLXV53nTgNHK0Hk2cISu5aAUGQKA26VwnZTEo09Wt+WOGjzjTkSi
|
||||
+TCoFfG77aqFQ1AyuAYWWErcS4/1/p0SeINXdztx34CJM/OqJ/AtjdL+09xwUZe6
|
||||
JeUWWPMJukkrFkjNkCjkdQlVxG+a3jMlmM016GECgYEAoJJ8QuEhH7qyvUdy/nmZ
|
||||
dH98oCPmggyM15fTH/yblP0S4L+4T8pFz7EyXmIuI1xVfC8iz0r7YrEDi5tpaFPW
|
||||
S0/r8EDMUjBr6um3cw2QFNT5XJsF5+mXcR6Vrwn0HBcpf0eTC8DBVezxqFEik3CN
|
||||
h49slG0e39lCurJWkjYOHTsCgYBeA/Oi4ic0DvoLErvm1IwZ7BDgHxFcKHxw+IWH
|
||||
+NFGfBVXk+jL+Vr/2U9qciRL2ZT2dxQT/ECtaPQRwM9WwAHYa0mtcgHwx3b+NROP
|
||||
0UpCEprdZ/vIfMOdpXcZ7MgGhQbdeags1naRlaK1pqxTWf3ZJErk4dhHWSurcI9y
|
||||
jeVeYQKBgQCsIaGmX/xigoLaEucXOM4V34QU1gepJkDLDNEw4r9EoNHoBCwIaGxX
|
||||
CWCsyuOwnCWM2OJJth5a+1xPYul0jsh7HCShICpkMsktoq4UdYbBfVNQiqenI7L7
|
||||
l6/mzU5Ds6KXKVh2FZ7O8zcup1BYs0pAHTZqF+P/1FjSu1jbGfezFg==
|
||||
-----END RSA PRIVATE KEY-----
|
|
@ -1,59 +1,61 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIFizCCBHOgAwIBAgIQAn/QNFyusvPyPREjg5iJWzANBgkqhkiG9w0BAQsFADBu
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
|
||||
RFYgVExTIENBIC0gRzEwHhcNMjEwMzA2MDAwMDAwWhcNMjIwMzA2MjM1OTU5WjAk
|
||||
MSIwIAYDVQQDExlkZW1lLmRqYW5nby12dWUtYWRtaW4uY29tMIIBIjANBgkqhkiG
|
||||
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk06Sqv+Al94VYBy4mKn4S/BYDxMdZxqC9YXM
|
||||
1o4h4JB3bnpV2r9SFIcWu16uHs3RqSMMoR8+fhoaXRZLMZExV98nKkeAUhKWA5TJ
|
||||
kQ+GMe3+XFmzeB+TJJmXDeIJZyAPc8wfqWLZLjvAfkMPzCHyxmf6k+sN0bfT7kFr
|
||||
0xhzDUhIpQp218BCUm4hyW2bqzwjHgzeg/TkHpaHNO7o0pR5/JEJs3jr3Hwsu0s0
|
||||
kfuAlBnf7BcJIh65BmVxXVFrW4qytPUk1d6Zt76nWy5AZtTw33cqUtKH7HcDHNgT
|
||||
ICsP8ozKaQ23Tb62kCMPwskvXIFuFOgwYKkHTMhXKefglhYGiwIDAQABo4ICbTCC
|
||||
AmkwHwYDVR0jBBgwFoAUVXRPsnJP9WC6UNHX5lFcmgGHGtcwHQYDVR0OBBYEFL0O
|
||||
PlBNqYf3I4ypNWFDpJ1U2G3pMCQGA1UdEQQdMBuCGWRlbWUuZGphbmdvLXZ1ZS1h
|
||||
ZG1pbi5jb20wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggr
|
||||
BgEFBQcDAjA+BgNVHSAENzA1MDMGBmeBDAECATApMCcGCCsGAQUFBwIBFhtodHRw
|
||||
Oi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwgYAGCCsGAQUFBwEBBHQwcjAkBggrBgEF
|
||||
BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEoGCCsGAQUFBzAChj5odHRw
|
||||
Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRW5jcnlwdGlvbkV2ZXJ5d2hlcmVEVlRM
|
||||
U0NBLUcxLmNydDAJBgNVHRMEAjAAMIIBAgYKKwYBBAHWeQIEAgSB8wSB8ADuAHUA
|
||||
KXm+8J45OSHwVnOfY6V35b5XfZxgCvj5TV0mXCVdx4QAAAF4CH/v+AAABAMARjBE
|
||||
AiAB+AshGhA6yvyvSV/q3jkTAyHxHKZACFnpAYEonFjS6gIgKayzGSgNkJbGJ1qp
|
||||
JqlVtA6dG53dG8bdUTmIiGF34k0AdQAiRUUHWVUkVpY/oS/x922G4CMmY63AS39d
|
||||
xoNcbuIPAgAAAXgIf+/JAAAEAwBGMEQCIC0/8V0lWjiV37EeIKAkH5zzvCpqO96s
|
||||
lLY5/FKsXLplAiBOPzyGwXNAZ4HoFYAhGcd1jZE9eb0esgYUCq5d16njDDANBgkq
|
||||
hkiG9w0BAQsFAAOCAQEAldgl6ApHK14DitAxzT0ejbu2E87d0tcQy7TOJTMEZs5p
|
||||
UokcBd54SEgt2COh73MUmTBU1DVdOtkY9Ok1mDPQdWQvu3P90KRsIEPYLIEh0w6O
|
||||
3SJmE0hXIcvC8u8ku36HyQnj1spHG9wKQBfH9Qdq9zti2wo2cAtmvF477H+a+wzD
|
||||
Y2iNY1ucgc1vDxwD6VVRg3iETqL7t8e1KHBMqDZ2EQvr0YHnms+D4VaFXA9WtRRg
|
||||
coSbdko2h+voGNuyJ3zvywN6zLnAfEqoyGEf9tzPDZbrkkp8BJGbGLvbc0PhPX6Q
|
||||
++r7ty7YFDzX+XDiGu2y+X+BVTqiP+FpP0C0Zqhnng==
|
||||
MIIFoTCCBImgAwIBAgIQBL1afhbyouKA0yBDgDhq/zANBgkqhkiG9w0BAQsFADBy
|
||||
MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg
|
||||
SW5jLjEdMBsGA1UECxMURG9tYWluIFZhbGlkYXRlZCBTU0wxHTAbBgNVBAMTFFRy
|
||||
dXN0QXNpYSBUTFMgUlNBIENBMB4XDTIxMDMyMDAwMDAwMFoXDTIyMDMxOTIzNTk1
|
||||
OVowJDEiMCAGA1UEAxMZZGVtby5kamFuZ28tdnVlLWFkbWluLmNvbTCCASIwDQYJ
|
||||
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMk2tqLVSJyC/VTuWlZ+a+bjthUotJ/o
|
||||
yQcXMC6eu/KyHbWqh5Ccj2kLh/zf9uhcs/GcYl/H1hyIVuiC+SHGmGfCqQB96vLl
|
||||
uwwJDlM+y910xKmKV2S6DEFbXDZP76pShrpPs1nDkU5gftuGhX1S77pmMqjbOsG+
|
||||
gZJAlAZKzT5xnGwpo4rkHc8xPY0ac29+9HXYDawpmySSdbfG+W0kape/wBexFmO+
|
||||
KLt/oRk+QJbtPguLNLLlvZznf+fFp5UcmsVks/scg9fM1pnj3QQaCB8RXQQKkskm
|
||||
Hi67PGFJOeepNFkApzHO4sUM3ya2Rskzfs9DtTlCODn3XFSVJz7DyTsCAwEAAaOC
|
||||
An8wggJ7MB8GA1UdIwQYMBaAFH/TmfOgRw4xAFZWIo63zJ7dygGKMB0GA1UdDgQW
|
||||
BBSRBeJj2dUcPqhi3km5tbW5lZP3aTAkBgNVHREEHTAbghlkZW1vLmRqYW5nby12
|
||||
dWUtYWRtaW4uY29tMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcD
|
||||
AQYIKwYBBQUHAwIwPgYDVR0gBDcwNTAzBgZngQwBAgEwKTAnBggrBgEFBQcCARYb
|
||||
aHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMIGSBggrBgEFBQcBAQSBhTCBgjA0
|
||||
BggrBgEFBQcwAYYoaHR0cDovL3N0YXR1c2UuZGlnaXRhbGNlcnR2YWxpZGF0aW9u
|
||||
LmNvbTBKBggrBgEFBQcwAoY+aHR0cDovL2NhY2VydHMuZGlnaXRhbGNlcnR2YWxp
|
||||
ZGF0aW9uLmNvbS9UcnVzdEFzaWFUTFNSU0FDQS5jcnQwCQYDVR0TBAIwADCCAQIG
|
||||
CisGAQQB1nkCBAIEgfMEgfAA7gB1AEalVet1+pEgMLWiiWn0830RLEF0vv1JuIWr
|
||||
8vxw/m1HAAABeE1whV0AAAQDAEYwRAIgPFX8oV29XVZMDi2tbEuBo2AuS4udT2I/
|
||||
tMHo9EPNPOYCIGFeOpkGfPcG4szSvKEmUIYimb3vejH0QJ6qB3+T6E5kAHUAIkVF
|
||||
B1lVJFaWP6Ev8fdthuAjJmOtwEt/XcaDXG7iDwIAAAF4TXCFeAAABAMARjBEAiBC
|
||||
HxlN8ItLz/FW/gYrmGGXTVvxxnVKv9t5bsj2AsdmOQIgJVu8zYZVNjt7AHFusZWg
|
||||
ZYSY0Qd+11v1oXBHAi0OUAowDQYJKoZIhvcNAQELBQADggEBAEKj+pGihWMbm/Bm
|
||||
d+7Ra6gngG5N/c7S1cPzmOAlX3bWOFLqZRVPiC8Xa5uzLuqkYMiRIuIFUjZj2CwS
|
||||
gKVwEk3xIL76sMVURV17mhjV7jbhzCSIqnEVLpiGRsuEoHKW8UUAzBdAZjjk4D+Y
|
||||
LZKOQKcWojGTCyRJA5dRHy+sWtnZcHGaD36UHeVh0ctFhoVcc9Oxsh9T6W4NnMd/
|
||||
CthO8fDic3643232J+6VF1vH5fkz1Q6UGbH+GbmkZ70Rv9YCl78zU77juBfTy9ht
|
||||
HJmcwLWF6Hef7Z+K2QnvT6H+cIb6OxSErshy9TlKgTRjVD7A3wTrri/dCJqfINVk
|
||||
FoBVzmQ=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh
|
||||
MIIErjCCA5agAwIBAgIQBYAmfwbylVM0jhwYWl7uLjANBgkqhkiG9w0BAQsFADBh
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
||||
QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT
|
||||
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
||||
b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
|
||||
MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc
|
||||
oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo
|
||||
lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj
|
||||
pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h
|
||||
yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n
|
||||
wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M
|
||||
pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf
|
||||
BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw
|
||||
HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
|
||||
AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
|
||||
Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
|
||||
Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
|
||||
/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
|
||||
MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B
|
||||
SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW
|
||||
M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV
|
||||
4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ
|
||||
sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy
|
||||
rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg==
|
||||
QTAeFw0xNzEyMDgxMjI4MjZaFw0yNzEyMDgxMjI4MjZaMHIxCzAJBgNVBAYTAkNO
|
||||
MSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMR0wGwYDVQQL
|
||||
ExREb21haW4gVmFsaWRhdGVkIFNTTDEdMBsGA1UEAxMUVHJ1c3RBc2lhIFRMUyBS
|
||||
U0EgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgWa9X+ph+wAm8
|
||||
Yh1Fk1MjKbQ5QwBOOKVaZR/OfCh+F6f93u7vZHGcUU/lvVGgUQnbzJhR1UV2epJa
|
||||
e+m7cxnXIKdD0/VS9btAgwJszGFvwoqXeaCqFoP71wPmXjjUwLT70+qvX4hdyYfO
|
||||
JcjeTz5QKtg8zQwxaK9x4JT9CoOmoVdVhEBAiD3DwR5fFgOHDwwGxdJWVBvktnoA
|
||||
zjdTLXDdbSVC5jZ0u8oq9BiTDv7jAlsB5F8aZgvSZDOQeFrwaOTbKWSEInEhnchK
|
||||
ZTD1dz6aBlk1xGEI5PZWAnVAba/ofH33ktymaTDsE6xRDnW97pDkimCRak6CEbfe
|
||||
3dXw6OV5AgMBAAGjggFPMIIBSzAdBgNVHQ4EFgQUf9OZ86BHDjEAVlYijrfMnt3K
|
||||
AYowHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDgYDVR0PAQH/BAQD
|
||||
AgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAG
|
||||
AQH/AgEAMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3Au
|
||||
ZGlnaWNlcnQuY29tMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwzLmRpZ2lj
|
||||
ZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RDQS5jcmwwTAYDVR0gBEUwQzA3Bglg
|
||||
hkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29t
|
||||
L0NQUzAIBgZngQwBAgEwDQYJKoZIhvcNAQELBQADggEBAK3dVOj5dlv4MzK2i233
|
||||
lDYvyJ3slFY2X2HKTYGte8nbK6i5/fsDImMYihAkp6VaNY/en8WZ5qcrQPVLuJrJ
|
||||
DSXT04NnMeZOQDUoj/NHAmdfCBB/h1bZ5OGK6Sf1h5Yx/5wR4f3TUoPgGlnU7EuP
|
||||
ISLNdMRiDrXntcImDAiRvkh5GJuH4YCVE6XEntqaNIgGkRwxKSgnU3Id3iuFbW9F
|
||||
UQ9Qqtb1GX91AJ7i4153TikGgYCdwYkBURD8gSVe8OAco6IfZOYt/TEwii1Ivi1C
|
||||
qnuUlWpsF1LdQNIdfbW3TSe0BhQa7ifbVIfvPWHYOu3rkg1ZeMo6XRU9B4n5VyJY
|
||||
RmE=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAk06Sqv+Al94VYBy4mKn4S/BYDxMdZxqC9YXM1o4h4JB3bnpV
|
||||
2r9SFIcWu16uHs3RqSMMoR8+fhoaXRZLMZExV98nKkeAUhKWA5TJkQ+GMe3+XFmz
|
||||
eB+TJJmXDeIJZyAPc8wfqWLZLjvAfkMPzCHyxmf6k+sN0bfT7kFr0xhzDUhIpQp2
|
||||
18BCUm4hyW2bqzwjHgzeg/TkHpaHNO7o0pR5/JEJs3jr3Hwsu0s0kfuAlBnf7BcJ
|
||||
Ih65BmVxXVFrW4qytPUk1d6Zt76nWy5AZtTw33cqUtKH7HcDHNgTICsP8ozKaQ23
|
||||
Tb62kCMPwskvXIFuFOgwYKkHTMhXKefglhYGiwIDAQABAoIBAACotbtFUI8qLTC0
|
||||
fP1VDu+4CYzRUKzCnGdgy91oRJQh0VPEzfGGlzI3g7O4fre6KZmQg8cmW283ZEea
|
||||
VYfJPU4S74GFUSumbaL8EJ+XhDAty/+Gkmj59/yOVPPfWQKfGbKY7TAiz+BT4Btj
|
||||
s9Ewx0p5i9A+Ziqg04MZw9O6V9/TuzkKd0HoSNNEnTueEb4IZgvEbNQRWyvkBiY5
|
||||
X2o5keDUIQY1/Psrd+HqCq6BngV+2p+dlmTtzkFm4SX5pVptvkasdj/GPQHCTIU+
|
||||
DpS/dYV0T43pm7VpGz/3XSkPXPiIBkcAofY3VcMF4YV1CW1YnWDuuP8VMFoeG5B9
|
||||
g4MrHzECgYEAw1ATxKZ3SB/PbnkaHRiwhh/tLXP/0SZokMRABsTcVFpK1xqOlX8i
|
||||
1wYKk52XvV5LyYZQNiKgRGlSda3lv0H9nfibPo/EDbH/UerHnKAztas5vnHNeAAK
|
||||
LGq4QK8kJ/pplqi8C+bWmgA22Rx/kYaiCrtZUG/IRFUge4bCDp949BUCgYEAwRPt
|
||||
AX7eg9f0hxsmpqWhjBV2InzDGN2j+V3kSLwuzUZqTH6JQL9x6UgA5O3XmhMp1hMr
|
||||
ZkedM/7rvGxeo02t/l51CKSsjLkrW21zt1Rj4KY98Ay1ajAqmmMB2cE/G8AWRbbL
|
||||
EKRKRRyiC+umcX7fdCjsiSXNWQ1BzjFmFGx0mB8CgYAPAt+SFK1ESNWbiwk7xUMD
|
||||
+/4xqSG3RHly7vJw0r6QaSQpZiwhR1U5K4iykcEw18eBZKZTktO4jlO9IbFvwrWo
|
||||
Z4wfAdOyrcSO2jmfSxzOUKuufHarS218vnMM3aksvW1SHAPf8kz6JxwQEcWoPK3F
|
||||
n2Kc8Qp2XgiSFehiUVVthQKBgQCp1Uwhh6ZVFK179i7+YS0DmpEqbtHx2mv02lkG
|
||||
fbkxSWIRXTB/6qZZS8O1m1yNo5OmQYBoXE/0P6S+PhjUzmxhFlcdvjQlKG/x4Qnr
|
||||
Vejw32oV8CfXevzOho5HK4vGbiVpNwvR3KGTv0bu816Z8L6/X4wIa18AmP+sTpl7
|
||||
F5dLgwKBgHymEzm+tzUetW6JX3zK38TwSqBp5oExano91yQrnl9DNnx1umojKrGr
|
||||
jmkYdvJbOXYGi9qo0cJeX/1bycA0ISEBFItWPp23WDK6rKKypC2kY2nYZKIQNWZl
|
||||
jYUrCYxu9KqMmpYPQfIpnjbWzjKN6OnFD1VJJDczEFqLUm1q79ba
|
||||
-----END RSA PRIVATE KEY-----
|
||||
MIIEogIBAAKCAQEAyTa2otVInIL9VO5aVn5r5uO2FSi0n+jJBxcwLp678rIdtaqH
|
||||
kJyPaQuH/N/26Fyz8ZxiX8fWHIhW6IL5IcaYZ8KpAH3q8uW7DAkOUz7L3XTEqYpX
|
||||
ZLoMQVtcNk/vqlKGuk+zWcORTmB+24aFfVLvumYyqNs6wb6BkkCUBkrNPnGcbCmj
|
||||
iuQdzzE9jRpzb370ddgNrCmbJJJ1t8b5bSRql7/AF7EWY74ou3+hGT5Alu0+C4s0
|
||||
suW9nOd/58WnlRyaxWSz+xyD18zWmePdBBoIHxFdBAqSySYeLrs8YUk556k0WQCn
|
||||
Mc7ixQzfJrZGyTN+z0O1OUI4OfdcVJUnPsPJOwIDAQABAoIBAA8baQX7vnplyVBt
|
||||
nuG8lyxcL2kSR9FzwFgkcQ0nBNR5dAqWNZxxbMEFyR1+0UJr52S+CZLIZbZ5tBC7
|
||||
+KmFCB9OObMcQR4ginUiXu14GwVTBYr3JI2e/FmR2vAG+2cN0Ci/4CberJO2Yf/o
|
||||
bzBUIESd9LLB1v0B6SeKarK4PgWwjrr/twowABRBhkkKFErfYZjfNh1mALXPNEUA
|
||||
7z3a8abw+JWympIFKWxi3YXyLOJZaGawOPDhq+ZVv+7rXvIyAzUzpmwCprjZFL4Q
|
||||
hgN7IY7KjYK772Ffe0nwMbd3wbwYeAelM9fndH9dTMrQ1n6EcDBzla8Cwl6OVEk3
|
||||
GpQqOfECgYEA+7qFHw75AOI3FFke/2VOJ58m0rrYJwDrLazlrzashi7qgJOBY6jp
|
||||
yjLgGCOcR9v8pRWkOw2VLy+dhdr16Xp/XYhuSa6O5EC7igtnUVx9xu+XAksZiB97
|
||||
f4lm7F3uirEh7ewuqiRETI9o6V5iGTCSMSc21zlJ1zoxnLMSuMyCKTECgYEAzKDD
|
||||
PNJVZAiZJ25JKinkZlTyQ9VmQkfrvsIBWheN844uoSmmLR4PNwriZQtlURI58WA2
|
||||
pe20aHJaleOJvzgW/OvcB+7mf/Ukn1mw6Ciusj6jXLXmmq8i80W0RMr1Rdbq8+dp
|
||||
DNZt0iDXEZXHEGqdkpkn/gsvYL+jeIiKyuJ9PisCgYAoZGF//lMORT45UaObr5G+
|
||||
4dbE8Z5Fg+w4xAmG9+rvDRAr2X9lknERNOCofu5QyYfcpYBYyXEqxSUtmVjkQfe1
|
||||
9nJb+FqNXaW6HOJTN9gm18MPZyWNph+W82FEhD4Gmy2qk79ZJcCf2FMpPy/Wguiy
|
||||
Ymx2VIb4tinHzyQt6wLnwQKBgAURSiR8dP7oM5rFYWx44x4hpmpFo6WqkE0GEvB/
|
||||
OtW4RLFbDbF6WBgd3eNwt86dK/AtWM0dKOWZR2ME4olowzD6SlWr9etfT8vedcIa
|
||||
F9F0Oal3G8Hi6nOp20AE4rQbEXB+35wgx1F33LujwO1IJqTVxCbHciHsPQkkIIPL
|
||||
vhxHAoGAdwbRiK2OCmycedsD+L5qdxOYiL8JIAXLP+H7ZD0Jyx21UxQAmvza6fIx
|
||||
HygnDGzrTJoOPEWu5WmGs4i6mr1bChHpo85LVNfytsxbE59y3I0va1IlSUC6wjXP
|
||||
Yy3caUiBgxmzz4vhqCFdpLhT2SyyB4m13ggLmeyqLy88WnYCgiE=
|
||||
-----END RSA PRIVATE KEY-----
|
|
@ -1,60 +1,61 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIFnzCCBIegAwIBAgIQDULdZ8Ko3AktSKrXM0T8azANBgkqhkiG9w0BAQsFADBu
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
|
||||
RFYgVExTIENBIC0gRzEwHhcNMjEwMzA2MDAwMDAwWhcNMjIwMzA2MjM1OTU5WjAf
|
||||
MR0wGwYDVQQDExRkamFuZ28tdnVlLWFkbWluLmNvbTCCASIwDQYJKoZIhvcNAQEB
|
||||
BQADggEPADCCAQoCggEBALPsn57ttIHmQQQSdtdOP+f07zelzXk6Y2Ta6mLdBx0z
|
||||
HZjoCH3CieDGyLs19B6dphURjI8TtRd6KkclUKwYHL4gzP1AzDOCNzOtizMRm/ad
|
||||
3hS2H10oZHxOI6fec/ytb7b0Nu4EhZ8/GLsIGvs/hXBaadk8DP5gOLHsm28rlROT
|
||||
EGYraXYi5CTM/auRJcndTNp/v6VhQblqWxojAzlTxlcjwXkreqzhk3y9IN+1VYiV
|
||||
AEk2srVdbfjk6yB5tnKGErAxKPOBzrkzWvh3lIEwrZ/0wRsb/NFGW9g5QDCa8oXV
|
||||
HaJ8qq2dW4X7HOm88QO6xqZiFLldYoYv9psdrrNHd58CAwEAAaOCAoYwggKCMB8G
|
||||
A1UdIwQYMBaAFFV0T7JyT/VgulDR1+ZRXJoBhxrXMB0GA1UdDgQWBBR6M6BtHZ13
|
||||
MWMDkoP/lLyUfEAcezA5BgNVHREEMjAwghRkamFuZ28tdnVlLWFkbWluLmNvbYIY
|
||||
d3d3LmRqYW5nby12dWUtYWRtaW4uY29tMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUE
|
||||
FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwPgYDVR0gBDcwNTAzBgZngQwBAgEwKTAn
|
||||
BggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMIGABggrBgEF
|
||||
BQcBAQR0MHIwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBK
|
||||
BggrBgEFBQcwAoY+aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0VuY3J5cHRp
|
||||
b25FdmVyeXdoZXJlRFZUTFNDQS1HMS5jcnQwCQYDVR0TBAIwADCCAQYGCisGAQQB
|
||||
1nkCBAIEgfcEgfQA8gB3ACl5vvCeOTkh8FZzn2Old+W+V32cYAr4+U1dJlwlXceE
|
||||
AAABeAiEftAAAAQDAEgwRgIhALoCVuRcMRqM2wwuEsGGCy2mno/3t4qi3RZR2l4B
|
||||
sWZ2AiEApyQ2yCgb2UsEx0YAnjrejgPgj7tsCmwBAi5Vsl/vmccAdwAiRUUHWVUk
|
||||
VpY/oS/x922G4CMmY63AS39dxoNcbuIPAgAAAXgIhH8pAAAEAwBIMEYCIQCpvmUS
|
||||
hv244dpidw1cD6BNu3MPp7xii+63D0OtQa5cJgIhAMAS6PWmwy0g5naWQBj028Qt
|
||||
mh/UdGFSQhgQsPfyAjZUMA0GCSqGSIb3DQEBCwUAA4IBAQBVCd2ZGxA01PyIUokC
|
||||
1rsjxPCtdvzdj4jcIBiXQw1AVSRrkq9L6TkQfF12wYLzTzLbiW/JmenIdVUC1O2N
|
||||
mc1Zd8jxqr/gC3RhdnzxV1ABA6jn44MYfdK5ZGXyG8wTBXMczfHRJhlhLsfdK78U
|
||||
BHkBbsKq3Q4rjOf/hV2TDBa77Grd66m0zfaTYcidja6wIZvnrzNl7Tf6rIgRnx8O
|
||||
/vo/IJhfkQzT9ZfyOfLMiiZUMzwKPQPpHBbJ3C3JSLq9fPeTm4/soN/4aKn1hU3m
|
||||
qJvfqBtzg4vafmj3p7BZD0LdSmYn8to+xq5gkt57/4Bfn+RAX7/dqx8pBjHXOj98
|
||||
rjQN
|
||||
MIIFszCCBJugAwIBAgIQCGwikUrRfEUk8GbxRWLVIDANBgkqhkiG9w0BAQsFADBy
|
||||
MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg
|
||||
SW5jLjEdMBsGA1UECxMURG9tYWluIFZhbGlkYXRlZCBTU0wxHTAbBgNVBAMTFFRy
|
||||
dXN0QXNpYSBUTFMgUlNBIENBMB4XDTIxMDMwMzAwMDAwMFoXDTIyMDMwMjIzNTk1
|
||||
OVowHzEdMBsGA1UEAxMUZGphbmdvLXZ1ZS1hZG1pbi5jb20wggEiMA0GCSqGSIb3
|
||||
DQEBAQUAA4IBDwAwggEKAoIBAQC0iitqUeTxkq5qabbVcB+7a+YArfKAJBRvcj+T
|
||||
VVdRkvEjcfGLvXIJUTvcUqJkRRYFbimdjB5q7CWCld8bgz/UOpIEmbdqn+WgzrNn
|
||||
WWZrRiN5ylHAsIaKlgYKh6gcftEco6OgkrM8oyq1gORRBIcSj95VcqpIeAUMVyCX
|
||||
R0h3dXnLCVe70ejr8w2cyHrSeS68mXw7LlAdfC0JAZTB/wxwcitSnnIVEbV6wMzG
|
||||
BD5Ka/WprnJgJa7Prb5KHiZh4UG4Es2JpIHALMYLIeKQCUCIP1NmW8Ale+nhY9kD
|
||||
tJeSEIY+/dRoDjpPkkIZalMp+5p0yDQ1LIO4pDZxnoI2vFLFAgMBAAGjggKWMIIC
|
||||
kjAfBgNVHSMEGDAWgBR/05nzoEcOMQBWViKOt8ye3coBijAdBgNVHQ4EFgQUru5P
|
||||
/0LuJj6hxqHWVYUN690wFNEwOQYDVR0RBDIwMIIUZGphbmdvLXZ1ZS1hZG1pbi5j
|
||||
b22CGHd3dy5kamFuZ28tdnVlLWFkbWluLmNvbTAOBgNVHQ8BAf8EBAMCBaAwHQYD
|
||||
VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMD4GA1UdIAQ3MDUwMwYGZ4EMAQIB
|
||||
MCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCBkgYI
|
||||
KwYBBQUHAQEEgYUwgYIwNAYIKwYBBQUHMAGGKGh0dHA6Ly9zdGF0dXNlLmRpZ2l0
|
||||
YWxjZXJ0dmFsaWRhdGlvbi5jb20wSgYIKwYBBQUHMAKGPmh0dHA6Ly9jYWNlcnRz
|
||||
LmRpZ2l0YWxjZXJ0dmFsaWRhdGlvbi5jb20vVHJ1c3RBc2lhVExTUlNBQ0EuY3J0
|
||||
MAkGA1UdEwQCMAAwggEEBgorBgEEAdZ5AgQCBIH1BIHyAPAAdgBGpVXrdfqRIDC1
|
||||
oolp9PN9ESxBdL79SbiFq/L8cP5tRwAAAXf475pDAAAEAwBHMEUCIHTgL1+oRWE+
|
||||
REuWNRa5J1cflPKW63jk6/3ibF+Sm5peAiEAt74SK9Ka9QyMJfP57eDl3xA1Ctnb
|
||||
Bz6zTLIQFFicPGsAdgAiRUUHWVUkVpY/oS/x922G4CMmY63AS39dxoNcbuIPAgAA
|
||||
AXf475pNAAAEAwBHMEUCIQDOE36oL7MAxmHdEoI338jLW0xnBN8VeW9XyuTzIcq7
|
||||
eQIgLwJTNfLqgw7TofY3dKqof5rkcuJWMmSI4aapUUBjFfIwDQYJKoZIhvcNAQEL
|
||||
BQADggEBAC9lYBZuCzle1tSaJ4nVfogwHf0B4lKjDI8ixEnrDaY0tAuYst4S7zoU
|
||||
76dZcpdwQjVLtlLk5jyaNdN5ohsu9WpErq6N7bXKhbSPBavCPxP4sMWMvmeQQUtB
|
||||
UKqqRofXbx3WcWtsf1/Wlg3pyb0oyJ7kKt3iDG9OYEihQzEyG5Y72IE+HsbhTAWR
|
||||
zqxGnmMumQ+JTnxCCudPoVPk25i2BfndMbcY4N6YyJYuLwMojtMkAeWtRdMmqtiy
|
||||
lMb7EbWLYCHDyv892WTzie1BqZ7YcOaE59OChhmoYxiSXNHPCToIFECTz6BhPxlI
|
||||
T3LbIM4+81HNDebdR17NUE3zN44OjsA=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh
|
||||
MIIErjCCA5agAwIBAgIQBYAmfwbylVM0jhwYWl7uLjANBgkqhkiG9w0BAQsFADBh
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
||||
QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT
|
||||
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
||||
b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
|
||||
MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc
|
||||
oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo
|
||||
lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj
|
||||
pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h
|
||||
yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n
|
||||
wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M
|
||||
pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf
|
||||
BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw
|
||||
HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
|
||||
AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
|
||||
Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
|
||||
Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
|
||||
/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
|
||||
MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B
|
||||
SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW
|
||||
M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV
|
||||
4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ
|
||||
sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy
|
||||
rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg==
|
||||
-----END CERTIFICATE-----
|
||||
QTAeFw0xNzEyMDgxMjI4MjZaFw0yNzEyMDgxMjI4MjZaMHIxCzAJBgNVBAYTAkNO
|
||||
MSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMR0wGwYDVQQL
|
||||
ExREb21haW4gVmFsaWRhdGVkIFNTTDEdMBsGA1UEAxMUVHJ1c3RBc2lhIFRMUyBS
|
||||
U0EgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgWa9X+ph+wAm8
|
||||
Yh1Fk1MjKbQ5QwBOOKVaZR/OfCh+F6f93u7vZHGcUU/lvVGgUQnbzJhR1UV2epJa
|
||||
e+m7cxnXIKdD0/VS9btAgwJszGFvwoqXeaCqFoP71wPmXjjUwLT70+qvX4hdyYfO
|
||||
JcjeTz5QKtg8zQwxaK9x4JT9CoOmoVdVhEBAiD3DwR5fFgOHDwwGxdJWVBvktnoA
|
||||
zjdTLXDdbSVC5jZ0u8oq9BiTDv7jAlsB5F8aZgvSZDOQeFrwaOTbKWSEInEhnchK
|
||||
ZTD1dz6aBlk1xGEI5PZWAnVAba/ofH33ktymaTDsE6xRDnW97pDkimCRak6CEbfe
|
||||
3dXw6OV5AgMBAAGjggFPMIIBSzAdBgNVHQ4EFgQUf9OZ86BHDjEAVlYijrfMnt3K
|
||||
AYowHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDgYDVR0PAQH/BAQD
|
||||
AgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAG
|
||||
AQH/AgEAMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3Au
|
||||
ZGlnaWNlcnQuY29tMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwzLmRpZ2lj
|
||||
ZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RDQS5jcmwwTAYDVR0gBEUwQzA3Bglg
|
||||
hkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29t
|
||||
L0NQUzAIBgZngQwBAgEwDQYJKoZIhvcNAQELBQADggEBAK3dVOj5dlv4MzK2i233
|
||||
lDYvyJ3slFY2X2HKTYGte8nbK6i5/fsDImMYihAkp6VaNY/en8WZ5qcrQPVLuJrJ
|
||||
DSXT04NnMeZOQDUoj/NHAmdfCBB/h1bZ5OGK6Sf1h5Yx/5wR4f3TUoPgGlnU7EuP
|
||||
ISLNdMRiDrXntcImDAiRvkh5GJuH4YCVE6XEntqaNIgGkRwxKSgnU3Id3iuFbW9F
|
||||
UQ9Qqtb1GX91AJ7i4153TikGgYCdwYkBURD8gSVe8OAco6IfZOYt/TEwii1Ivi1C
|
||||
qnuUlWpsF1LdQNIdfbW3TSe0BhQa7ifbVIfvPWHYOu3rkg1ZeMo6XRU9B4n5VyJY
|
||||
RmE=
|
||||
-----END CERTIFICATE-----
|
|
@ -1,27 +1,27 @@
|
|||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAs+yfnu20geZBBBJ2104/5/TvN6XNeTpjZNrqYt0HHTMdmOgI
|
||||
fcKJ4MbIuzX0Hp2mFRGMjxO1F3oqRyVQrBgcviDM/UDMM4I3M62LMxGb9p3eFLYf
|
||||
XShkfE4jp95z/K1vtvQ27gSFnz8Yuwga+z+FcFpp2TwM/mA4seybbyuVE5MQZitp
|
||||
diLkJMz9q5Elyd1M2n+/pWFBuWpbGiMDOVPGVyPBeSt6rOGTfL0g37VViJUASTay
|
||||
tV1t+OTrIHm2coYSsDEo84HOuTNa+HeUgTCtn/TBGxv80UZb2DlAMJryhdUdonyq
|
||||
rZ1bhfsc6bzxA7rGpmIUuV1ihi/2mx2us0d3nwIDAQABAoIBADEzNl7eP2r6DLNR
|
||||
XT/4/M6wEq4T38ETr1RH7KoGKMjaTnCempvRE6Tslr1ivpOUpnLCbr49NFrsJB16
|
||||
XboBifKPw55JFs3LAM9X2GWpng1tE+pz9tWhkwDO2T8xPGRPBOpxk4e4otVuCpQy
|
||||
XjZwI0wa3TDzE9aHd1loCwT2VPiZ3As8rr0+4kIN6EyzneNb5Uys0LHMzHGHVBUl
|
||||
JY0fAwqrt7wi+AXSufcxX6uhwJOY0LAU0iiT3Y1CYP6IdTtwpyWW2DcYeuHtLK9Y
|
||||
oSnkHRXaJOcUHytDdRSXyJVD174r1wfSPCZ6DjXGc9ydwTQQg3ibTJrdn5gnaLZ9
|
||||
/Lrk80ECgYEA3CrP4NlbfBestRuU2LfEQvyzVVfiVWv7NjHDbryVTQ3hu5dR2hr8
|
||||
Q9acWwvg2virQVzSnECk4QsNydcaRriU0kq2Nf9Vzs8oTDZl7+K203L+Ry3bguUe
|
||||
r4q9v7mY6cCOIgE19H+BR2T21NVHHK3acR6WVO+95rlD0Aqe0FXmZmECgYEA0TUa
|
||||
y3Pbp7+kcUQIqdKwrYVCSgKQeco3VqtqlXDHjoD49tBP/WHJqJaGJ582bW3ozIYs
|
||||
1Iol3wInjOy6iOIvRK2tJibb7tor/WxMO4R5NbMYSswyOwyO+gaz3hoQbu+m/S12
|
||||
8BwM9JN1QHq3mYqT0QHvamPW9asU2auONRq+nf8CgYBREeKh5Odu9ji+J33TnzdB
|
||||
g1N1pXrOAYjrF7/i0sYXLXllXf7h1PX29Nt2GxWdC9vjoY5bwuHzi+Jz5CTkzarf
|
||||
FGurzm2GTXmFNrKqdkzj54ACLbyaokt+UBQ2uNy5lhHAK7n2Ycz0wRSyoiYhRVMe
|
||||
PCkW9YBzqNxzirWX+UlxgQKBgGhZlajffDOa2noIlk2moquaaWsjBk9JNvsK+1nY
|
||||
7CC/Ye8yDoPzL7PgiL/goTRJ+zFwx5Gn6qXmnDWlqpE2SJ94BYKfJVppBkIcr5WM
|
||||
SS0ozLgaS/+6DuLVTwg8de/vp5pnAAlZ5HhlyLlFvKhgP8Sjs3icng7hq7+6227P
|
||||
jT6fAoGBAMyPW7voNx29oPT04MMgAKdwyjR5sZv6vWhOW6KBOPkLUKPDfSfrVN0B
|
||||
H6JfetLZryHXgJioxBfLoLqIW+iMvW7UcCFD53I6nWpOzBtcPTjgeeIK0W4+f113
|
||||
RrXOS29rrxKr0NXvnYx26v5deQ9+KlxAUgTuC+EjqsX8NnGW21Cv
|
||||
-----END RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAtIoralHk8ZKuamm21XAfu2vmAK3ygCQUb3I/k1VXUZLxI3Hx
|
||||
i71yCVE73FKiZEUWBW4pnYweauwlgpXfG4M/1DqSBJm3ap/loM6zZ1lma0YjecpR
|
||||
wLCGipYGCoeoHH7RHKOjoJKzPKMqtYDkUQSHEo/eVXKqSHgFDFcgl0dId3V5ywlX
|
||||
u9Ho6/MNnMh60nkuvJl8Oy5QHXwtCQGUwf8McHIrUp5yFRG1esDMxgQ+Smv1qa5y
|
||||
YCWuz62+Sh4mYeFBuBLNiaSBwCzGCyHikAlAiD9TZlvAJXvp4WPZA7SXkhCGPv3U
|
||||
aA46T5JCGWpTKfuadMg0NSyDuKQ2cZ6CNrxSxQIDAQABAoIBAA5RZOcOLp9/+Agl
|
||||
cSQVO9cD1B5arUA/XEWIZIVdP8sO4cPjXfosoJYflKVBAnL8TaZJmdBOU/071C+6
|
||||
jhKjApVkvb7SqAqzOqVZrz2zh91bFyYqBvjGpyznf/wmzQzRe+kPC0OJTuCwugrh
|
||||
+Xl5Z/LvaP0S1nFf31qesE1/ED609pvWtdUWj2oop9zORBzjaGcXeOKNqX8XnQCp
|
||||
rJ487wcnuL8Nnuu+vuh8dC9o7zwjGrKwXhM3sijLp4q9VOF9fW2bYLyfLUR3FCFq
|
||||
JPrQXe1mY28w+uIlnEdPkwgGIJbzur601BuzU9ZH5MSl7iYV319MPz+rtizFJxLm
|
||||
OCg5hcMCgYEA7RrgQsrSj4fhi0VVkQ3fFeLJPQlvVcMK0OOYxP3cKQYSgXo79bQK
|
||||
i9yRCRVS2UTGh8B3MGbPr+sRINokeYtjWxGDOwAlkye9kRiCKzzZOrlwDAY/SEDZ
|
||||
HH5mVnv9UHtxCFSUub67IVWH7wCmoprKEK/loyvJFiE5jsxVmNZl3o8CgYEAwu1R
|
||||
nBsETJLuN5/fB9rW3NvjaHGT1B6LQ1uIBmsU6V71gBasawX/X3ENOoX1dQa2japp
|
||||
x58pjLJuP/t4WgZ41PBagij2G83VdFBdvrcVSk7B1yt8rudxmcvo1K6FR2FG7DMU
|
||||
9kkb9JKFT3/FM7LT+z4xXxJ0AoNg6QD1IIT5Y2sCgYEAyQUvOxGQISY334bh+8AB
|
||||
8iE7MidsoA5jfiRoIiOEY7eFOwbyDOcexeMzh7rvacs4cmGH655O2Lv34p1vrSiz
|
||||
DMO1OfFu6esYegqIWbYWCgar61XkkxJ/v/ueMhae9nwhoclr6mq9Zo6IV+Z6YIPR
|
||||
awJmM8fsjXmPvfSZYaHr7hsCgYAPzW99SU9q6cp4JfTNzTb4BreD4xlJ7AP8PPJl
|
||||
Gs9CMBmU/cGSl5ThZufco7mHeDjaeUNEFKooptp7Q2a5Xab0FFwyCyIQlPpGCLHg
|
||||
4TTPplzelb7w6wBxqG9CtrdFVySJx4ZehQTIKgy2qjQRgeDfkGYuP++5uG7l1NcK
|
||||
gN066wKBgDg2F4yMx4SBWL3aBjIVd+Zilm+pkU1ZGC1XcuLnqSSMcoDy/JMszQC1
|
||||
SEdDxgnCGlkWjtaxNPwfZTPU0SIoX5dcAx1EaHDJ+ibiIKGtM8forSCiP8fNz0oR
|
||||
SYNZaYVuDJb1SFk9vKJMuIIFWS+AM6rlcOpNu6A0+1MbstM4BvwS
|
||||
-----END RSA PRIVATE KEY-----
|
|
@ -1,7 +1,7 @@
|
|||
## 将HTTP请求全部重定向至HTTPS
|
||||
server {
|
||||
listen 80;
|
||||
server_name api.django-vue-admin.com;
|
||||
server_name daily.api.django-vue-admin.com;
|
||||
charset utf-8;
|
||||
access_log /var/log/nginx/api-80.access.log;
|
||||
error_log /var/log/nginx/api-80.error.log;
|
||||
|
@ -9,11 +9,11 @@ server {
|
|||
}
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name api.django-vue-admin.com;
|
||||
server_name daily.api.django-vue-admin.com;
|
||||
root /dvadmin-backend/;#项目路径
|
||||
charset utf-8;
|
||||
ssl_certificate /nginx/keys/api.django-vue-admin.com.crt;#.pem证书路径
|
||||
ssl_certificate_key /nginx/keys/api.django-vue-admin.com.key;#.key证书路径
|
||||
ssl_certificate /nginx/keys/daily.api.django-vue-admin.com.crt;#.pem证书路径
|
||||
ssl_certificate_key /nginx/keys/daily.api.django-vue-admin.com.key;#.key证书路径
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
@ -21,7 +21,7 @@ server {
|
|||
ssl_session_timeout 10m;
|
||||
error_page 497 https://$host$request_uri;
|
||||
proxy_set_header Host $proxy_host;
|
||||
proxy_set_header X-DTS-SCHEMA api;
|
||||
proxy_set_header X-DTS-SCHEMA daily.api;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
location / {
|
||||
|
@ -41,6 +41,6 @@ server {
|
|||
alias /dvadmin-backend/static; # your Django project's static files - amend as required
|
||||
}
|
||||
|
||||
access_log /var/log/nginx/api-443.access.log;
|
||||
error_log /var/log/nginx/api-443.error.log;
|
||||
access_log /var/log/nginx/daily.api-443.access.log;
|
||||
error_log /var/log/nginx/daily.api-443.error.log;
|
||||
}
|
||||
|
|
|
@ -25,10 +25,20 @@ server {
|
|||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
location / {
|
||||
try_files $uri $uri/ @router;#需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
|
||||
root /dvadmin-ui/dist/;
|
||||
add_header Cache-Control max-age=no-cache;
|
||||
index index.html index.php index.htm;
|
||||
}
|
||||
location ~* \.(css|js|png|jpg|jpeg|gif|gz|svg|mp4|ogg|ogv|webm|htc|xml|woff)$ {
|
||||
access_log off;
|
||||
add_header Cache-Control max-age=604800;
|
||||
root /dvadmin-ui/dist/;
|
||||
index index.html index.php index.htm;
|
||||
}
|
||||
|
||||
location @router {
|
||||
rewrite ^.*$ /index.html last;
|
||||
}
|
||||
access_log /var/log/nginx/daily.demo-443.access.log;
|
||||
error_log /var/log/nginx/daily.demo-443.error.log;
|
||||
}
|
||||
|
|
|
@ -25,10 +25,20 @@ server {
|
|||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
location / {
|
||||
try_files $uri $uri/ @router;#需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
|
||||
root /dvadmin-ui/dist/;
|
||||
add_header Cache-Control max-age=no-cache;
|
||||
index index.html index.php index.htm;
|
||||
}
|
||||
location ~* \.(css|js|png|jpg|jpeg|gif|gz|svg|mp4|ogg|ogv|webm|htc|xml|woff)$ {
|
||||
access_log off;
|
||||
add_header Cache-Control max-age=604800;
|
||||
root /dvadmin-ui/dist/;
|
||||
index index.html index.php index.htm;
|
||||
}
|
||||
|
||||
location @router {
|
||||
rewrite ^.*$ /index.html last;
|
||||
}
|
||||
access_log /var/log/nginx/demo-443.access.log;
|
||||
error_log /var/log/nginx/demo-443.error.log;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
## 将HTTP请求全部重定向至HTTPS
|
||||
server {
|
||||
listen 80;
|
||||
server_name django-vue-admin.com;
|
||||
charset utf-8;
|
||||
access_log /var/log/nginx/www-80.access.log;
|
||||
error_log /var/log/nginx/www-80.error.log;
|
||||
rewrite ^(.*)$ https://${server_name}$1 permanent;
|
||||
}
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name django-vue-admin.com;
|
||||
root /vadmin-doc/;#项目路径
|
||||
charset utf-8;
|
||||
ssl_certificate /nginx/keys/www.django-vue-admin.com.crt;#.pem证书路径
|
||||
ssl_certificate_key /nginx/keys/www.django-vue-admin.com.key;#.key证书路径
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 10m;
|
||||
error_page 497 https://$host$request_uri;
|
||||
proxy_set_header Host $proxy_host;
|
||||
proxy_set_header X-DTS-SCHEMA www;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
location / {
|
||||
try_files $uri $uri/ @router;#需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
|
||||
root /dvadmin-doc/docs/.vuepress/dist/;
|
||||
index index.html index.php index.htm;
|
||||
}
|
||||
location @router {
|
||||
rewrite ^.*$ /index.html last;
|
||||
}
|
||||
access_log /var/log/nginx/www-443.access.log;
|
||||
error_log /var/log/nginx/www-443.error.log;
|
||||
}
|
|
@ -25,10 +25,13 @@ server {
|
|||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
location / {
|
||||
root /dvadmin-doc/dist/;
|
||||
try_files $uri $uri/ @router;#需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
|
||||
root /dvadmin-doc/docs/.vuepress/dist/;
|
||||
index index.html index.php index.htm;
|
||||
}
|
||||
|
||||
location @router {
|
||||
rewrite ^.*$ /index.html last;
|
||||
}
|
||||
access_log /var/log/nginx/www-443.access.log;
|
||||
error_log /var/log/nginx/www-443.error.log;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
FROM node:12
|
||||
COPY ./dvadmin-ui/package.json /
|
||||
RUN npm install --registry=https://registry.npm.taobao.org
|
||||
#RUN npm run build:prod
|
||||
#CMD ["npm","run","dev"]
|
|
@ -0,0 +1,5 @@
|
|||
FROM node:12
|
||||
COPY ./dvadmin-ui/package.json /
|
||||
RUN npm install --registry=https://registry.npm.taobao.org
|
||||
#RUN npm run build:prod
|
||||
#CMD ["npm","run","dev"]
|
|
@ -13,6 +13,7 @@ https://docs.djangoproject.com/en/1.11/ref/settings/
|
|||
# 导入全局环境变量
|
||||
import datetime
|
||||
import os
|
||||
import sys
|
||||
|
||||
from mongoengine import connect
|
||||
|
||||
|
@ -20,7 +21,7 @@ from conf.env import *
|
|||
|
||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
sys.path.insert(0,os.path.join(BASE_DIR,'apps'))
|
||||
# Quick-start development settings - unsuitable for production
|
||||
# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
|
||||
|
||||
|
@ -45,9 +46,9 @@ INSTALLED_APPS = [
|
|||
'corsheaders',
|
||||
'captcha',
|
||||
# 自定义app
|
||||
'apps.permission',
|
||||
'apps.op_drf',
|
||||
'apps.system',
|
||||
'apps.vadmin.permission',
|
||||
'apps.vadmin.op_drf',
|
||||
'apps.vadmin.system',
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
|
@ -59,6 +60,7 @@ MIDDLEWARE = [
|
|||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
'vadmin.op_drf.middleware.ApiLoggingMiddleware', # 用于记录API访问日志
|
||||
]
|
||||
# 允许跨域源
|
||||
CORS_ORIGIN_ALLOW_ALL = CORS_ORIGIN_ALLOW_ALL
|
||||
|
@ -117,7 +119,7 @@ USE_I18N = True
|
|||
|
||||
USE_L10N = True
|
||||
|
||||
USE_TZ = True
|
||||
USE_TZ = False
|
||||
|
||||
# Static files (CSS, JavaScript, Images)
|
||||
# https://docs.djangoproject.com/en/1.11/howto/static-files/
|
||||
|
@ -126,10 +128,15 @@ USE_TZ = True
|
|||
"""
|
||||
# 访问静态文件的url地址前缀
|
||||
STATIC_URL = '/static/'
|
||||
# 设置django的静态文件目录
|
||||
# 收集静态文件,必须将 MEDIA_ROOT,STATICFILES_DIRS先注释
|
||||
# python manage.py collectstatic
|
||||
# STATIC_ROOT=os.path.join(BASE_DIR,'static')
|
||||
# # 设置django的静态文件目录
|
||||
STATICFILES_DIRS = [
|
||||
os.path.join(BASE_DIR, "static")
|
||||
os.path.join(BASE_DIR, "static"),
|
||||
]
|
||||
if not os.path.exists(os.path.join(BASE_DIR, 'media')):
|
||||
os.makedirs(os.path.join(BASE_DIR, 'media'))
|
||||
# 访问上传文件的url地址前缀
|
||||
MEDIA_URL = "/media/"
|
||||
# 项目中存储上传文件的根目录
|
||||
|
@ -160,6 +167,10 @@ LOGGING = {
|
|||
'format': CONSOLE_LOG_FORMAT,
|
||||
'datefmt': '%Y-%m-%d %H:%M:%S',
|
||||
},
|
||||
'file': {
|
||||
'format': CONSOLE_LOG_FORMAT,
|
||||
'datefmt': '%Y-%m-%d %H:%M:%S',
|
||||
},
|
||||
},
|
||||
'handlers': {
|
||||
'file': {
|
||||
|
@ -189,7 +200,7 @@ LOGGING = {
|
|||
'loggers': {
|
||||
# default日志
|
||||
'': {
|
||||
'handlers': ['console'],
|
||||
'handlers': ['console','error','file'],
|
||||
'level': 'INFO',
|
||||
},
|
||||
# 数据库相关日志
|
||||
|
@ -247,9 +258,9 @@ JWT_AUTH = {
|
|||
'JWT_AUTH_HEADER_PREFIX': 'Bearer', # JWT的Header认证头以'JWT '开始
|
||||
'JWT_AUTH_COOKIE': 'AUTH_JWT',
|
||||
'JWT_VERIFY_EXPIRATION': True,
|
||||
'JWT_PAYLOAD_HANDLER': 'utils.jwt_util.jwt_payload_handler',
|
||||
'JWT_GET_USER_SECRET_KEY': 'utils.jwt_util.jwt_get_user_secret_key',
|
||||
'JWT_RESPONSE_PAYLOAD_HANDLER': 'utils.jwt_util.jwt_response_payload_handler',
|
||||
'JWT_PAYLOAD_HANDLER': 'apps.vadmin.utils.jwt_util.jwt_payload_handler',
|
||||
'JWT_GET_USER_SECRET_KEY': 'apps.vadmin.utils.jwt_util.jwt_get_user_secret_key',
|
||||
'JWT_RESPONSE_PAYLOAD_HANDLER': 'apps.vadmin.utils.jwt_util.jwt_response_payload_handler',
|
||||
}
|
||||
|
||||
# ================================================= #
|
||||
|
@ -261,23 +272,24 @@ REST_FRAMEWORK = {
|
|||
),
|
||||
|
||||
'DEFAULT_AUTHENTICATION_CLASSES': (
|
||||
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
|
||||
'apps.vadmin.utils.authentication.RedisOpAuthJwtAuthentication',
|
||||
# 'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
|
||||
'rest_framework.authentication.BasicAuthentication',
|
||||
'rest_framework.authentication.SessionAuthentication',
|
||||
'utils.authentication.RedisOpAuthJwtAuthentication'
|
||||
|
||||
),
|
||||
|
||||
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.AutoSchema',
|
||||
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
|
||||
'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),
|
||||
'EXCEPTION_HANDLER': 'utils.exceptions.op_exception_handler',
|
||||
'EXCEPTION_HANDLER': 'apps.vadmin.utils.exceptions.op_exception_handler',
|
||||
}
|
||||
# ================================================= #
|
||||
# ************** 登录方式配置 ************** #
|
||||
# ================================================= #
|
||||
AUTHENTICATION_BACKENDS = (
|
||||
'utils.backends.CustomBackend',
|
||||
'utils.backends.SessionAuthentication',
|
||||
'apps.vadmin.utils.backends.CustomBackend',
|
||||
'apps.vadmin.utils.backends.SessionAuthentication',
|
||||
)
|
||||
AUTH_USER_MODEL = 'permission.UserProfile'
|
||||
# username_field
|
||||
|
@ -302,3 +314,7 @@ CAPTCHA_NOISE_FUNCTIONS = (
|
|||
)
|
||||
# CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.random_char_challenge'
|
||||
CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.math_challenge'
|
||||
|
||||
API_LOG_ENABLE = True
|
||||
# API_LOG_METHODS = 'ALL' # ['POST', 'DELETE']
|
||||
# API_LOG_METHODS = ['POST', 'DELETE'] # ['POST', 'DELETE']
|
||||
|
|
|
@ -18,16 +18,11 @@ from captcha.conf import settings as ca_settings
|
|||
from captcha.helpers import captcha_image_url, captcha_audio_url
|
||||
from captcha.models import CaptchaStore
|
||||
from django.conf import settings
|
||||
from django.conf.urls import url
|
||||
from django.contrib import admin
|
||||
from django.urls import re_path, include
|
||||
from django.views.static import serve
|
||||
from rest_framework.documentation import include_docs_urls
|
||||
from rest_framework.views import APIView
|
||||
|
||||
from apps.permission.views import GetUserProfileView, GetRouters
|
||||
from apps.op_drf.response import SuccessResponse
|
||||
from utils.login import LoginView, LogoutView
|
||||
from apps.vadmin.op_drf.response import SuccessResponse
|
||||
|
||||
|
||||
class CaptchaRefresh(APIView):
|
||||
|
@ -45,18 +40,6 @@ class CaptchaRefresh(APIView):
|
|||
|
||||
|
||||
urlpatterns = [
|
||||
re_path('api-token-auth/', LoginView.as_view(), name='api_token_auth'),
|
||||
re_path(r'^admin/', admin.site.urls),
|
||||
url(r'docs/', include_docs_urls(title='接口文档')),
|
||||
re_path(r'^permission/', include('apps.permission.urls')),
|
||||
re_path(r'^system/', include('apps.system.urls')),
|
||||
re_path(r'media/(?P<path>.*)', serve, {"document_root": settings.MEDIA_ROOT}),
|
||||
re_path(r'^login/$', LoginView.as_view()),
|
||||
re_path(r'^logout/$', LogoutView.as_view()),
|
||||
re_path(r'^getInfo/$', GetUserProfileView.as_view()),
|
||||
re_path(r'^getRouters/$', GetRouters.as_view()),
|
||||
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
|
||||
url(r"captcha/refresh/$", CaptchaRefresh.as_view(), name="captcha-refresh"), # 刷新验证码
|
||||
re_path('captcha/', include('captcha.urls')), # 图片验证码 路由
|
||||
|
||||
re_path(r'^admin/', include('apps.vadmin.urls')),
|
||||
]
|
||||
|
|
|
@ -1,102 +0,0 @@
|
|||
"""
|
||||
django中间件
|
||||
"""
|
||||
|
||||
import json
|
||||
import datetime
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
from mongoengine import DynamicDocument, StringField, IntField, DictField, DateTimeField
|
||||
from rest_framework_mongoengine.serializers import DocumentSerializer
|
||||
import logging
|
||||
from utils.decorators import exceptionHandler
|
||||
from utils.request_util import get_request_ip, get_request_data, get_request_path
|
||||
from .viewsets import CustomMongoModelViewSet
|
||||
from django.conf import settings
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ApiLog(DynamicDocument):
|
||||
"""
|
||||
API访问日志的Mongo模型
|
||||
"""
|
||||
request_ip = StringField(verbose_name="request_ip", help_text="请求IP")
|
||||
request_username = StringField(verbose_name="request_username", help_text="请求username")
|
||||
request_method = StringField(verbose_name="request_method", help_text="请求方法")
|
||||
request_path = StringField(verbose_name="request_path", help_text="请求路径")
|
||||
request_body = DictField(verbose_name="request_body", help_text="请求参数")
|
||||
response_code = IntField(verbose_name="response_code", help_text="响应状态码")
|
||||
response_reason = StringField(verbose_name="response_reason", help_text="响应简述")
|
||||
access_time = DateTimeField(verbose_name="access_time", help_text="访问时间")
|
||||
|
||||
|
||||
class ApiLogSerializer(DocumentSerializer):
|
||||
"""
|
||||
API访问日志的Mongo序列化器
|
||||
"""
|
||||
class Meta:
|
||||
model = ApiLog
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class ApiLogModelViewSet(CustomMongoModelViewSet):
|
||||
"""
|
||||
API访问日志的CRUD视图
|
||||
"""
|
||||
queryset = ApiLog.objects.all()
|
||||
serializer_class = ApiLogSerializer
|
||||
search_fields = ('request_ip', 'request_username', 'request_method', 'response_reason', 'source_system')
|
||||
ordering = '-access_time' # 默认排序
|
||||
|
||||
|
||||
class ApiLoggingMiddleware(MiddlewareMixin):
|
||||
"""
|
||||
用于记录API访问日志中间件
|
||||
"""
|
||||
def __init__(self, get_response=None):
|
||||
super().__init__(get_response)
|
||||
self.enable = op_settings.get_api_log_setting().get('enable', False)
|
||||
self.methods = op_settings.get_api_log_setting().get('methods', set())
|
||||
|
||||
@classmethod
|
||||
@exceptionHandler()
|
||||
def __handle_request(cls, request):
|
||||
request.request_ip = get_request_ip(request)
|
||||
request.request_data = get_request_data(request)
|
||||
request.access_time = datetime.datetime.now()
|
||||
|
||||
@classmethod
|
||||
@exceptionHandler(logger=logger)
|
||||
def __handle_response(cls, request, response):
|
||||
# request_data,request_ip由PermissionInterfaceMiddleware中间件中添加的属性
|
||||
body = getattr(request, 'request_data', {})
|
||||
# 请求含有password则用*替换掉(暂时先用于所有接口的password请求参数)
|
||||
if isinstance(body, dict) and body.get('password', ''):
|
||||
body['password'] = '*' * len(body['password'])
|
||||
info = {
|
||||
'request_ip': getattr(request, 'request_ip', 'unknown'),
|
||||
'request_username': request.user.username,
|
||||
'request_method': request.method,
|
||||
'request_path': request.path,
|
||||
'request_body': body,
|
||||
'response_code': response.status_code,
|
||||
'response_reason': response.reason_phrase,
|
||||
'source_system': getattr(settings,'SOURCE_SYSTEM_NAME',None),
|
||||
'access_time': request.access_time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
}
|
||||
log = ApiLog(**info)
|
||||
log.save()
|
||||
|
||||
def process_request(self, request):
|
||||
self.__handle_request(request)
|
||||
|
||||
def process_response(self, request, response):
|
||||
"""
|
||||
主要请求处理完之后记录
|
||||
:param request:
|
||||
:param response:
|
||||
:return:
|
||||
"""
|
||||
if self.enable:
|
||||
if self.methods == 'ALL' or request.method in self.methods:
|
||||
self.__handle_response(request, response)
|
||||
return response
|
|
@ -1,287 +0,0 @@
|
|||
import logging
|
||||
import traceback
|
||||
from types import FunctionType, MethodType
|
||||
|
||||
from rest_framework.exceptions import APIException as DRFAPIException
|
||||
from rest_framework.request import Request
|
||||
from rest_framework.views import APIView
|
||||
|
||||
from utils import exceptions
|
||||
from utils.model_util import ModelRelateUtils
|
||||
from .logging.view_logger import CustomerRelationshipViewLogger
|
||||
from .response import SuccessResponse, ErrorResponse
|
||||
from .serializers import CustomModelSerializer
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def op_exception_handler(ex, context):
|
||||
"""
|
||||
统一异常拦截处理
|
||||
目的:(1)取消所有的500异常响应,统一响应为标准错误返回
|
||||
(2)准确显示错误信息
|
||||
:param ex:
|
||||
:param context:
|
||||
:return:
|
||||
"""
|
||||
msg = ''
|
||||
if isinstance(ex, DRFAPIException):
|
||||
# set_rollback()
|
||||
msg = ex.detail
|
||||
elif isinstance(ex, exceptions.APIException):
|
||||
msg = ex.message
|
||||
elif isinstance(ex, Exception):
|
||||
logger.error(traceback.format_exc())
|
||||
msg = str(ex)
|
||||
return ErrorResponse(msg=msg)
|
||||
|
||||
|
||||
class CustomAPIView(APIView):
|
||||
"""
|
||||
继承、增强DRF的APIView
|
||||
"""
|
||||
extra_permission_classes = ()
|
||||
# 仅当GET方法时会触发该权限的校验
|
||||
GET_permission_classes = ()
|
||||
|
||||
# 仅当POST方法时会触发该权限的校验
|
||||
POST_permission_classes = ()
|
||||
|
||||
# 仅当DELETE方法时会触发该权限的校验
|
||||
DELETE_permission_classes = ()
|
||||
|
||||
# 仅当PUT方法时会触发该权限的校验
|
||||
PUT_permission_classes = ()
|
||||
|
||||
view_logger_classes = ()
|
||||
|
||||
def initial(self, request: Request, *args, **kwargs):
|
||||
super().initial(request, *args, **kwargs)
|
||||
self.check_extra_permissions(request)
|
||||
self.check_method_extra_permissions(request)
|
||||
|
||||
def get_view_loggers(self, request: Request, *args, **kwargs):
|
||||
logger_classes = self.view_logger_classes or []
|
||||
if not logger_classes:
|
||||
return []
|
||||
view_loggers = [logger_class(view=self, request=request, *args, **kwargs) for logger_class in logger_classes]
|
||||
return view_loggers
|
||||
|
||||
def handle_logging(self, request: Request, *args, **kwargs):
|
||||
view_loggers = self.get_view_loggers(request, *args, **kwargs)
|
||||
method = request.method.lower()
|
||||
for view_logger in view_loggers:
|
||||
view_logger.handle(request, *args, **kwargs)
|
||||
logger_fun = getattr(view_logger, f'handle_{method}', None)
|
||||
if logger_fun and isinstance(logger_fun, (FunctionType, MethodType)):
|
||||
logger_fun(request, *args, **kwargs)
|
||||
|
||||
def get_extra_permissions(self):
|
||||
return [permission() for permission in self.extra_permission_classes]
|
||||
|
||||
def check_extra_permissions(self, request: Request):
|
||||
for permission in self.get_extra_permissions():
|
||||
if not permission.has_permission(request, self):
|
||||
self.permission_denied(
|
||||
request, message=getattr(permission, 'message', None)
|
||||
)
|
||||
|
||||
def get_method_extra_permissions(self):
|
||||
_name = self.request.method.upper()
|
||||
method_extra_permission_classes = getattr(self, f"{_name}_permission_classes", None)
|
||||
if not method_extra_permission_classes:
|
||||
return []
|
||||
return [permission() for permission in method_extra_permission_classes]
|
||||
|
||||
def check_method_extra_permissions(self, request):
|
||||
for permission in self.get_method_extra_permissions():
|
||||
if not permission.has_permission(request, self):
|
||||
self.permission_denied(
|
||||
request, message=getattr(permission, 'message', None)
|
||||
)
|
||||
|
||||
|
||||
class BatchModelApIView(CustomAPIView):
|
||||
"""
|
||||
模型批量CRUD通用视图
|
||||
"""
|
||||
model = None
|
||||
serializer_class = None
|
||||
POST_serializer_class = None
|
||||
PUT_serializer_class = None
|
||||
field_name = 'instanceId'
|
||||
instanceId_list_param_name = 'instanceIdList'
|
||||
instance_info_param_name = 'info'
|
||||
|
||||
def get_serializer(self, *args, **kwargs):
|
||||
if not self.request:
|
||||
return None
|
||||
serializer_class = getattr(self, f"{self.request.method}_serializer_class", None) or getattr(self,
|
||||
'serializer_class')
|
||||
serializer = serializer_class(*args, **kwargs)
|
||||
if isinstance(serializer, CustomModelSerializer):
|
||||
serializer.request = self.request
|
||||
return serializer
|
||||
|
||||
def get(self, request: Request = None, *args, **kwargs):
|
||||
data = self.get_serializer(self.model.objects.filter(**{f'{self.field_name}__in': request.data}),
|
||||
many=True).data
|
||||
return SuccessResponse(data=data)
|
||||
|
||||
def post(self, request: Request = None, *args, **kwargs):
|
||||
data = []
|
||||
for info in request.data:
|
||||
serializer = self.get_serializer(data=info)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
serializer.save()
|
||||
data.append(serializer.data)
|
||||
return SuccessResponse(data=data)
|
||||
|
||||
def put(self, request: Request = None, *args, **kwargs):
|
||||
data = []
|
||||
instanceId_list = request.data.get(self.instanceId_list_param_name, [])
|
||||
info = request.data.get(self.instance_info_param_name, {})
|
||||
for instanceId in instanceId_list:
|
||||
serializer = self.get_serializer(
|
||||
instance=self.model.objects.get(**{f'{self.field_name}': instanceId}),
|
||||
data=info,
|
||||
partial=True
|
||||
)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
serializer.save()
|
||||
return SuccessResponse(data=instanceId_list)
|
||||
|
||||
def delete(self, request: Request = None, *args, **kwargs):
|
||||
self.model.objects.filter(**{f'{self.field_name}__in': request.data}).delete()
|
||||
return SuccessResponse(data=request.data)
|
||||
|
||||
|
||||
class ModelRelationshipAPIView(CustomAPIView):
|
||||
"""
|
||||
模型关联关系通用CRUD视图
|
||||
"""
|
||||
model = None
|
||||
through_model = None
|
||||
relationship_model = None
|
||||
|
||||
relationship_serializer = None
|
||||
field_name: str = None
|
||||
from_field_name: str = 'instanceId'
|
||||
to_field_name: str = None
|
||||
relationship_field_values = ()
|
||||
|
||||
view_logger_classes = [CustomerRelationshipViewLogger, ]
|
||||
|
||||
def get_relationship_data(self, instanceId: str):
|
||||
relationship_model_field_name = self.relationship_field_values[0]
|
||||
params = {}
|
||||
params[self.field_name] = instanceId
|
||||
business_key_dict = self.through_model.objects.filter(**params).values(
|
||||
*self.relationship_field_values).distinct()
|
||||
business_key_list = [ele[relationship_model_field_name] for ele in business_key_dict]
|
||||
|
||||
params = {}
|
||||
params[f"{self.to_field_name}__in"] = business_key_list
|
||||
queryset = self.relationship_model.objects.filter(**params)
|
||||
|
||||
data = ModelRelateUtils.model_to_dict(queryset, self.relationship_serializer, default=[])
|
||||
if 'creator' in self.relationship_field_values and 'ctime' in self.relationship_field_values:
|
||||
for _index in range(len(data)):
|
||||
ele = data[_index]
|
||||
ele['relationship_creator'] = business_key_dict[_index]['creator']
|
||||
ele['relationship_ctime'] = business_key_dict[_index]['ctime']
|
||||
return data
|
||||
|
||||
def execute_method(self, execute: str, request: Request, instanceId: str, *args, **kwargs):
|
||||
method = request.method.lower()
|
||||
fun = None
|
||||
if execute == 'before':
|
||||
fun = getattr(self, f'before_{method}', None)
|
||||
elif execute == 'handle':
|
||||
fun = getattr(self, f'handle_{method}', None)
|
||||
elif execute == 'after':
|
||||
fun = getattr(self, f'after_{method}', None)
|
||||
if fun and isinstance(fun, (FunctionType, MethodType)):
|
||||
fun(request, instanceId, *args, **kwargs)
|
||||
|
||||
def do_request(self, request: Request, instanceId: str, *args, **kwargs):
|
||||
self.execute_method('before', request, instanceId, *args, **kwargs)
|
||||
self.execute_method('handle', request, instanceId, *args, **kwargs)
|
||||
self.execute_method('after', request, instanceId, *args, **kwargs)
|
||||
self.handle_logging(request, instanceId=instanceId, *args, **kwargs)
|
||||
data = self.get_relationship_data(instanceId)
|
||||
return SuccessResponse(data)
|
||||
|
||||
def get(self, request: Request, instanceId: str, *args, **kwargs):
|
||||
return self.do_request(request, instanceId, *args, **kwargs)
|
||||
|
||||
def post(self, request: Request, instanceId: str, *args, **kwargs):
|
||||
return self.do_request(request, instanceId, *args, **kwargs)
|
||||
|
||||
def put(self, request: Request, instanceId: str, *args, **kwargs):
|
||||
return self.do_request(request, instanceId, *args, **kwargs)
|
||||
|
||||
def delete(self, request: Request, instanceId: str, *args, **kwargs):
|
||||
return self.do_request(request, instanceId, *args, **kwargs)
|
||||
|
||||
|
||||
class ModelRelationshipView(ModelRelationshipAPIView):
|
||||
"""
|
||||
模型关联关系通用CRUD视图
|
||||
"""
|
||||
|
||||
def handle_get(self, request: Request, instanceId: str, *args, **kwargs):
|
||||
data = self.get_relationship_data(instanceId)
|
||||
return SuccessResponse(data)
|
||||
|
||||
def handle_post(self, request: Request, instanceId: str, *args, **kwargs):
|
||||
relationship_model_field_name = self.relationship_field_values[0]
|
||||
params = {}
|
||||
params[f"{self.to_field_name}__in"] = request.data
|
||||
queryset = self.relationship_model.objects.filter(**params)
|
||||
|
||||
exist_list = [getattr(ele, self.to_field_name) for ele in queryset]
|
||||
bulk_info = []
|
||||
for _id in exist_list:
|
||||
info = {}
|
||||
info[relationship_model_field_name] = _id
|
||||
info[self.field_name] = instanceId
|
||||
info['creator'] = request.user.username
|
||||
bulk_info.append(self.through_model(**info))
|
||||
self.through_model.objects.bulk_create(bulk_info)
|
||||
data = self.get_relationship_data(instanceId)
|
||||
return SuccessResponse(data)
|
||||
|
||||
def handle_put(self, request: Request, instanceId: str, *args, **kwargs):
|
||||
relationship_model_field_name = self.relationship_field_values[0]
|
||||
|
||||
params1 = {}
|
||||
params1[f"{self.field_name}"] = instanceId
|
||||
params2 = {}
|
||||
params2[f"{relationship_model_field_name}__in"] = request.data
|
||||
|
||||
relationships = self.through_model.objects.filter(**params1).exclude(**params2)
|
||||
relationships.delete()
|
||||
|
||||
params = {}
|
||||
params[f"{self.field_name}"] = instanceId
|
||||
|
||||
instanceId_dict = self.through_model.objects.filter(**params).values(*self.relationship_field_values).distinct()
|
||||
instanceId_list = [ele.get(relationship_model_field_name) for ele in instanceId_dict]
|
||||
create_list = list(set(request.data).difference(set(instanceId_list)))
|
||||
for _id in create_list:
|
||||
info = {}
|
||||
info[relationship_model_field_name] = _id
|
||||
info[self.field_name] = instanceId
|
||||
info['creator'] = request.user.username
|
||||
data = self.get_relationship_data(instanceId)
|
||||
return SuccessResponse(data)
|
||||
|
||||
def handle_delete(self, request: Request, instanceId: str, *args, **kwargs):
|
||||
relationship_model_field_name = self.relationship_field_values[0]
|
||||
params = {}
|
||||
params[f"{self.field_name}"] = instanceId
|
||||
params[f"{relationship_model_field_name}__in"] = request.data
|
||||
self.through_model.objects.filter(**params).delete()
|
||||
data = self.get_relationship_data(instanceId)
|
||||
return SuccessResponse(data)
|
|
@ -1,75 +0,0 @@
|
|||
import logging
|
||||
import os
|
||||
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.db import connection
|
||||
|
||||
from scripts import getSql
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
"""
|
||||
项目初始化命令: python manage.py initialization
|
||||
"""
|
||||
|
||||
def customSql(self, sql_list, model_name, table_name):
|
||||
"""
|
||||
批量执行sql
|
||||
:param sql_list:
|
||||
:param table_name: 表名
|
||||
:return:
|
||||
"""
|
||||
with connection.cursor() as cursor:
|
||||
num = 0
|
||||
for ele in table_name.split(','):
|
||||
cursor.execute("select count(*) from {}".format(ele))
|
||||
result = cursor.fetchone()
|
||||
num += result[0]
|
||||
if num > 0:
|
||||
while True:
|
||||
inp = input(f'[{model_name}]模型已初始化完成,继续将清空[{table_name}]表中所有数据,是否继续初始化?【 Y/N 】')
|
||||
if inp.upper() == 'N':
|
||||
return False
|
||||
elif inp.upper() == 'Y':
|
||||
logger.info(f'正在清空[{table_name}]中数据...')
|
||||
cursor.execute("SET foreign_key_checks = 0")
|
||||
for ele in table_name.split(','):
|
||||
cursor.execute("truncate table {};".format(ele))
|
||||
cursor.execute("SET foreign_key_checks = 1")
|
||||
connection.commit()
|
||||
logger.info(f'清空[{table_name}]中数据{result[0]}条')
|
||||
break
|
||||
|
||||
for sql in sql_list:
|
||||
cursor.execute(sql)
|
||||
connection.commit()
|
||||
return True
|
||||
|
||||
def init(self, sql_filename, model_name, table_name):
|
||||
"""
|
||||
初始化
|
||||
:param sql_filename: sql存放位置
|
||||
:param model_name: 模块名
|
||||
:param table_name: 表名
|
||||
:return:
|
||||
"""
|
||||
logger.info(f'正在初始化[{model_name}]中...')
|
||||
if self.customSql(getSql(sql_filename), model_name, table_name):
|
||||
logger.info(f'[{model_name}]初始化完成!')
|
||||
else:
|
||||
logger.info(f'已取消[{table_name}]初始化')
|
||||
|
||||
def handle(self, *args, **options):
|
||||
self.init(os.path.join('system', 'system_dictdata.sql'), '字典管理', 'system_dictdata')
|
||||
self.init(os.path.join('system', 'system_dictdetails.sql'), '字典详情', 'system_dictdetails')
|
||||
self.init(os.path.join('system', 'system_configsettings.sql'), '参数设置', 'system_configsettings')
|
||||
self.init(os.path.join('permission', 'permission_post.sql'), '岗位管理', 'permission_post')
|
||||
self.init(os.path.join('permission', 'permission_dept.sql'), '部门管理', 'permission_dept')
|
||||
self.init(os.path.join('permission', 'permission_menu.sql'), '菜单管理', 'permission_menu')
|
||||
self.init(os.path.join('permission', 'permission_role.sql'), '角色管理',
|
||||
','.join(['permission_role', 'permission_role_dept', 'permission_role_menu']))
|
||||
self.init(os.path.join('permission', 'permission_userprofile.sql'), '用户管理', ','.join(
|
||||
['permission_userprofile_groups', 'permission_userprofile', 'permission_userprofile_role',
|
||||
'permission_userprofile_post']))
|
|
@ -1,34 +0,0 @@
|
|||
import django_filters
|
||||
|
||||
from apps.system.models import DictDetails, DictData, ConfigSettings
|
||||
|
||||
|
||||
class DictDataFilter(django_filters.rest_framework.FilterSet):
|
||||
"""
|
||||
字典管理 简单过滤器
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = DictData
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class DictDetailsFilter(django_filters.rest_framework.FilterSet):
|
||||
"""
|
||||
字典详情 简单过滤器
|
||||
"""
|
||||
dictType = django_filters.CharFilter(field_name='dict_data__dictType')
|
||||
|
||||
class Meta:
|
||||
model = DictDetails
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class ConfigSettingsFilter(django_filters.rest_framework.FilterSet):
|
||||
"""
|
||||
参数设置 简单过滤器
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = ConfigSettings
|
||||
fields = '__all__'
|
|
@ -0,0 +1,31 @@
|
|||
from logging import StreamHandler, getLevelName
|
||||
from logging.handlers import RotatingFileHandler
|
||||
from typing import Optional, IO
|
||||
|
||||
|
||||
class MyStreamHandler(StreamHandler):
|
||||
|
||||
def __init__(self, stream: Optional[IO[str]] = ...) -> None:
|
||||
print(222)
|
||||
super().__init__(stream)
|
||||
|
||||
def __repr__(self):
|
||||
level = getLevelName(self.level)
|
||||
name = getattr(self.stream, 'name', '')
|
||||
# bpo-36015: name can be an int
|
||||
name = str(name)
|
||||
if name:
|
||||
name += ' '
|
||||
print(111)
|
||||
return '<%s %s(%s)>' % (self.__class__.__name__, name, level)
|
||||
class MyRotatingFileHandler(RotatingFileHandler):
|
||||
|
||||
def __init__(self, filename: str, mode: str = ..., maxBytes: int = ..., backupCount: int = ...,
|
||||
encoding: Optional[str] = ..., delay: bool = ...) -> None:
|
||||
print(4444)
|
||||
super().__init__(filename, mode, maxBytes, backupCount, encoding, delay)
|
||||
|
||||
def __repr__(self):
|
||||
level = getLevelName(self.level)
|
||||
print(22)
|
||||
return '<%s %s (%s)>' % (self.__class__.__name__, self.baseFilename, level)
|
|
@ -6,7 +6,7 @@ logger = logging.getLogger(__name__)
|
|||
|
||||
|
||||
class OpDrfConfig(AppConfig):
|
||||
name = 'op_drf'
|
||||
name = 'apps.vadmin.op_drf'
|
||||
verbose_name = "OP DRF"
|
||||
|
||||
def ready(self):
|
|
@ -2,7 +2,7 @@ from django.contrib.auth import get_user_model
|
|||
from django.db import models
|
||||
from django.db.models import SET_NULL
|
||||
|
||||
from utils.string_util import uuid_8, uuid_16, uuid_32, uuid_36
|
||||
from ..utils.string_util import uuid_8, uuid_16, uuid_32, uuid_36
|
||||
|
||||
|
||||
class IdField(models.CharField):
|
|
@ -6,12 +6,11 @@ import logging
|
|||
import operator
|
||||
from functools import reduce
|
||||
|
||||
from django.db.models import Q
|
||||
from django.utils import six
|
||||
from mongoengine.queryset import visitor
|
||||
from rest_framework.filters import BaseFilterBackend, SearchFilter, OrderingFilter
|
||||
|
||||
from apps.permission.models import Dept
|
||||
from ..permission.models import Dept
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -102,45 +101,55 @@ class MongoAdvancedSearchFilter(BaseFilterBackend):
|
|||
class DataLevelPermissionsFilter(BaseFilterBackend):
|
||||
"""
|
||||
数据 级权限过滤器
|
||||
0. 判断过滤的数据是否有创建人 "creator" 字段
|
||||
1. 判断用户是否为超级管理员角色
|
||||
2. 根据角色的最大权限进行数据过滤(会有多个角色,进行去重取最大权限)
|
||||
3. 只为仅本人数据权限时只返回过滤本人数据
|
||||
4. 自定数据权限 获取部门,根据部门过滤
|
||||
0. 获取用户的部门id,没有部门则返回空
|
||||
1. 判断过滤的数据是否有创建人所在部门 "creator" 字段,没有则返回全部
|
||||
2. 如果用户没有关联角色则返回本部门数据
|
||||
3. 根据角色的最大权限进行数据过滤(会有多个角色,进行去重取最大权限)
|
||||
3.1 判断用户是否为超级管理员角色/如果有1(所有数据) 则返回所有数据
|
||||
|
||||
4. 只为仅本人数据权限时只返回过滤本人数据,并且部门为自己本部门(考虑到用户会变部门,只能看当前用户所在的部门数据)
|
||||
5. 自定数据权限 获取部门,根据部门过滤
|
||||
"""
|
||||
project_resource_name: str = 'project__tenant__managers'
|
||||
|
||||
def filter_queryset(self, request, queryset, view):
|
||||
# 0. 判断过滤的数据是否有创建人 "creator" 字段
|
||||
if not hasattr(queryset.model, 'creator'):
|
||||
# 0. 获取用户的部门id,没有部门则返回空
|
||||
user_dept_id = getattr(request.user, 'dept_id')
|
||||
if not user_dept_id:
|
||||
return queryset.none()
|
||||
|
||||
# 1. 判断过滤的数据是否有创建人所在部门 "dept_belong_id" 字段
|
||||
if not hasattr(queryset.model, 'dept_belong_id'):
|
||||
return queryset
|
||||
# 1. 判断用户是否为超级管理员角色
|
||||
|
||||
# 2. 如果用户没有关联角色则返回本部门数据
|
||||
if not hasattr(request.user, 'role'):
|
||||
return queryset.filter(creator=request.user)
|
||||
role_list = request.user.role.all().values('id', 'admin', 'dataScope')
|
||||
if True in list(set([ele.get('admin') for ele in role_list])):
|
||||
return queryset
|
||||
return queryset.filter(dept_belong_id=user_dept_id)
|
||||
|
||||
# 2. 根据角色的最大权限进行数据过滤(会有多个角色,进行去重取最大权限)
|
||||
dataScope_list = list(set([ele.get('dataScope') for ele in role_list]))
|
||||
if '1' in dataScope_list: # 返回所有数据
|
||||
return queryset
|
||||
# 3. 根据所有角色 获取所有权限范围
|
||||
role_list = request.user.role.all().values('admin', 'dataScope')
|
||||
dataScope_list = []
|
||||
for ele in role_list:
|
||||
# 3.1 判断用户是否为超级管理员角色/如果有1(所有数据) 则返回所有数据
|
||||
if '1' == ele.get('dataScope') or ele.get('admin') == True:
|
||||
return queryset
|
||||
dataScope_list.append(ele.get('dataScope'))
|
||||
dataScope_list = list(set(dataScope_list))
|
||||
|
||||
# 3. 只为仅本人数据权限时只返回过滤本人数据
|
||||
# 4. 只为仅本人数据权限时只返回过滤本人数据,并且部门为自己本部门(考虑到用户会变部门,只能看当前用户所在的部门数据)
|
||||
if dataScope_list == ['5']:
|
||||
return queryset.filter(Q(creator=request.user))
|
||||
return queryset.filter(creator=request.user, dept_belong_id=request.user.dept_id)
|
||||
|
||||
# 4. 自定数据权限 获取部门,根据部门过滤
|
||||
# 5. 自定数据权限 获取部门,根据部门过滤
|
||||
dept_list = []
|
||||
for ele in dataScope_list:
|
||||
if ele == '2':
|
||||
dept_list.extend(request.user.role.all().values_list('dept__id', flat=True))
|
||||
elif ele == '3':
|
||||
dept_list.append(request.user.dept.id)
|
||||
dept_list.append(user_dept_id)
|
||||
elif ele == '4':
|
||||
dept_list.extend(self.get_dept(request.user.dept.id, Dept.objects.all().values('id', 'parentId')))
|
||||
dept_list.append(request.user.dept.id)
|
||||
return queryset.filter(Q(creator=request.user) | Q(creator__dept__in=list(set(dept_list))))
|
||||
dept_list.extend(self.get_dept(user_dept_id, Dept.objects.all().values('id', 'parentId')))
|
||||
dept_list.append(user_dept_id)
|
||||
return queryset.filter(dept_belong_id__in=list(set(dept_list)))
|
||||
|
||||
def get_dept(self, id, dept_all_list, dept_list=[]):
|
||||
"""
|
|
@ -7,8 +7,8 @@ from rest_framework.settings import api_settings
|
|||
from . import mixins
|
||||
from .pagination import Pagination, JsonPagination
|
||||
from .response import SuccessResponse
|
||||
from utils.jsonpath_util import get_jsonpath, filter_json, search_json
|
||||
from utils.sort_util import sortList
|
||||
from ..utils.jsonpath_util import get_jsonpath, filter_json, search_json
|
||||
from ..utils.sort_util import sortList
|
||||
from .views import CustomAPIView
|
||||
|
||||
|
|
@ -16,11 +16,27 @@ class ViewLogger(object):
|
|||
super().__init__()
|
||||
self.view = view
|
||||
self.request = request
|
||||
self.model = None
|
||||
self.log_prefix: str = ''
|
||||
if self.view and hasattr(self.view.get_queryset(), 'model'):
|
||||
self.model: Model = self.view.get_queryset().model
|
||||
elif self.view and hasattr(self.view.get_serializer(), 'Meta') and hasattr(self.view.get_serializer().Meta,
|
||||
'model'):
|
||||
self.model: Model = self.view.get_serializer().Meta.model
|
||||
if self.model:
|
||||
request.session['model_name'] = getattr(self.model, '_meta').verbose_name
|
||||
|
||||
def handle(self, request: Request, *args, **kwargs):
|
||||
pass
|
||||
|
||||
def logger(self, msg):
|
||||
"""
|
||||
|
||||
:param msg:
|
||||
:return: logger
|
||||
"""
|
||||
self.request.session['request_msg'] = msg
|
||||
return logger
|
||||
|
||||
class APIViewLogger(ViewLogger):
|
||||
"""
|
||||
|
@ -36,7 +52,7 @@ class APIViewLogger(ViewLogger):
|
|||
"""
|
||||
|
||||
def __init__(self, view=None, request=None, *args, **kwargs) -> None:
|
||||
super().__init__()
|
||||
super().__init__(view, request, *args, **kwargs)
|
||||
self.view: APIView = view
|
||||
self.request: Request = request
|
||||
self.user = request.user
|
||||
|
@ -52,12 +68,7 @@ class ModelViewLogger(APIViewLogger):
|
|||
"""
|
||||
|
||||
def __init__(self, view=None, request=None, *args, **kwargs) -> None:
|
||||
super().__init__(view, request)
|
||||
|
||||
if hasattr(self.view.get_queryset(), 'model'):
|
||||
self.model: Model = self.view.get_queryset().model
|
||||
elif hasattr(self.view.get_serializer(), 'Meta') and hasattr(self.view.get_serializer().Meta, 'model'):
|
||||
self.model: Model = self.view.get_serializer().Meta.model
|
||||
super().__init__(view, request, *args, **kwargs)
|
||||
|
||||
|
||||
class RelationshipViewLogger(APIViewLogger):
|
||||
|
@ -103,7 +114,7 @@ class CustomerRelationshipViewLogger(RelationshipViewLogger):
|
|||
model_name = getattr(self.view.model, '_meta').verbose_name
|
||||
to_field_name = self.view.to_field_name
|
||||
to_model_name = getattr(self.view.relationship_model, '_meta').verbose_name
|
||||
logger.info(
|
||||
self.logger(
|
||||
f'{self.log_prefix}用户[username={operator}]新增, {model_name}实例[{to_field_name}={self.instanceId}]与{to_model_name}的关联关系')
|
||||
|
||||
def handle_put(self, request: Request, *args, **kwargs):
|
||||
|
@ -114,7 +125,7 @@ class CustomerRelationshipViewLogger(RelationshipViewLogger):
|
|||
model_name = getattr(self.view.model, '_meta').verbose_name
|
||||
to_field_name = self.view.to_field_name
|
||||
to_model_name = getattr(self.view.relationship_model, '_meta').verbose_name
|
||||
logger.info(
|
||||
self.logger(
|
||||
f'{self.log_prefix}用户[username={operator}]重置, {model_name}实例[{to_field_name}={self.instanceId}]与{to_model_name}的关联关系')
|
||||
|
||||
def handle_delete(self, request: Request, *args, **kwargs):
|
||||
|
@ -125,7 +136,7 @@ class CustomerRelationshipViewLogger(RelationshipViewLogger):
|
|||
model_name = getattr(self.view.model, '_meta').verbose_name
|
||||
to_field_name = self.view.to_field_name
|
||||
to_model_name = getattr(self.view.relationship_model, '_meta').verbose_name
|
||||
logger.info(
|
||||
self.logger(
|
||||
f'{self.log_prefix}用户[username={operator}]移除, {model_name}实例[{to_field_name}={self.instanceId}]与{to_model_name}的关联关系')
|
||||
|
||||
|
||||
|
@ -144,7 +155,7 @@ class CustomerModelViewLogger(ModelViewLogger):
|
|||
pass
|
||||
operator = self.user.username
|
||||
model_name = getattr(self.model, '_meta').verbose_name
|
||||
logger.info(f'{self.log_prefix}用户[username={operator}]检索{model_name}:[{instance}]')
|
||||
self.logger(f'{self.log_prefix}用户[username={operator}]检索{model_name}:[{instance}]')
|
||||
|
||||
def handle_list(self, request: Request, *args, **kwargs):
|
||||
"""
|
||||
|
@ -153,7 +164,7 @@ class CustomerModelViewLogger(ModelViewLogger):
|
|||
pass
|
||||
operator = self.user.username
|
||||
model_name = getattr(self.model, '_meta').verbose_name
|
||||
logger.info(f'{self.log_prefix}用户[username={operator}]查询{model_name}')
|
||||
self.logger(f'{self.log_prefix}用户[username={operator}]查询{model_name}')
|
||||
|
||||
def handle_create(self, request: Request, instance: Model = None, *args, **kwargs):
|
||||
"""
|
||||
|
@ -162,7 +173,7 @@ class CustomerModelViewLogger(ModelViewLogger):
|
|||
pass
|
||||
operator = self.user.username
|
||||
model_name = getattr(self.model, '_meta').verbose_name
|
||||
logger.info(f'{self.log_prefix}用户[username={operator}]创建{model_name}:[{instance}]')
|
||||
self.logger(f'{self.log_prefix}用户[username={operator}]创建{model_name}:[{instance}]')
|
||||
|
||||
def handle_update(self, request: Request, instance: Model = None, *args, **kwargs):
|
||||
"""
|
||||
|
@ -171,7 +182,7 @@ class CustomerModelViewLogger(ModelViewLogger):
|
|||
pass
|
||||
operator = self.user.username
|
||||
model_name = getattr(self.model, '_meta').verbose_name
|
||||
logger.info(f'{self.log_prefix}用户[username={operator}]更新{model_name}:[{instance}]')
|
||||
self.logger(f'{self.log_prefix}用户[username={operator}]更新{model_name}:[{instance}]')
|
||||
|
||||
def handle_partial_update(self, request: Request, instance: Model = None, *args, **kwargs):
|
||||
"""
|
||||
|
@ -180,7 +191,7 @@ class CustomerModelViewLogger(ModelViewLogger):
|
|||
pass
|
||||
operator = self.user.username
|
||||
model_name = getattr(self.model, '_meta').verbose_name
|
||||
logger.info(f'{self.log_prefix}用户[username={operator}]部分更新{model_name}:[{instance}]')
|
||||
self.logger(f'{self.log_prefix}用户[username={operator}]部分更新{model_name}:[{instance}]')
|
||||
|
||||
def handle_destroy(self, request: Request, instance: Model = None, *args, **kwargs):
|
||||
"""
|
||||
|
@ -189,4 +200,13 @@ class CustomerModelViewLogger(ModelViewLogger):
|
|||
pass
|
||||
operator = self.user.username
|
||||
model_name = getattr(self.model, '_meta').verbose_name
|
||||
logger.info(f'{self.log_prefix}用户[username={operator}]删除{model_name}:[{instance}]')
|
||||
self.logger(f'{self.log_prefix}用户[username={operator}]删除{model_name}:[{instance}]')
|
||||
|
||||
def handle_other(self, request: Request, instance: Model = None, *args, **kwargs):
|
||||
"""
|
||||
仅 其他 请求才会触发此方法
|
||||
"""
|
||||
pass
|
||||
operator = self.user.username
|
||||
model_name = getattr(self.model, '_meta').verbose_name
|
||||
self.logger(f'{self.log_prefix}用户[username={operator}]其他请求{model_name}:[{instance}]')
|
|
@ -0,0 +1,79 @@
|
|||
"""
|
||||
django中间件
|
||||
"""
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
|
||||
from apps.vadmin.system.models import OperationLog
|
||||
from ..utils.request_util import get_request_ip, get_request_data, get_request_path, get_browser, get_os, \
|
||||
get_login_location
|
||||
|
||||
|
||||
class ApiLoggingMiddleware(MiddlewareMixin):
|
||||
"""
|
||||
用于记录API访问日志中间件
|
||||
"""
|
||||
|
||||
def __init__(self, get_response=None):
|
||||
super().__init__(get_response)
|
||||
self.enable = getattr(settings, 'API_LOG_ENABLE', None) or False
|
||||
self.methods = getattr(settings, 'API_LOG_METHODS', None) or set()
|
||||
|
||||
@classmethod
|
||||
def __handle_request(cls, request):
|
||||
request.request_ip = get_request_ip(request)
|
||||
request.request_data = get_request_data(request)
|
||||
request.request_path = get_request_path(request)
|
||||
|
||||
@classmethod
|
||||
def __handle_response(cls, request, response):
|
||||
# request_data,request_ip由PermissionInterfaceMiddleware中间件中添加的属性
|
||||
body = getattr(request, 'request_data', {})
|
||||
# 请求含有password则用*替换掉(暂时先用于所有接口的password请求参数)
|
||||
if isinstance(body, dict) and body.get('password', ''):
|
||||
body['password'] = '*' * len(body['password'])
|
||||
if not hasattr(response, 'data') or not isinstance(response.data, dict):
|
||||
response.data = {}
|
||||
info = {
|
||||
'request_ip': getattr(request, 'request_ip', 'unknown'),
|
||||
'creator': request.user,
|
||||
'dept_belong_id': getattr(request.user, 'dept_id', None),
|
||||
'request_method': request.method,
|
||||
'request_path': request.request_path,
|
||||
'request_body': body,
|
||||
'response_code': response.data.get('code'),
|
||||
'request_location': get_login_location(request),
|
||||
'request_os': get_os(request),
|
||||
'request_browser': get_browser(request),
|
||||
'request_msg': request.session.get('request_msg'),
|
||||
'status': True if response.data.get('code') in [200, 204] else False,
|
||||
'json_result': {"code": response.data.get('code'), "msg": response.data.get('msg')},
|
||||
'request_modular': request.session.get('model_name'),
|
||||
}
|
||||
if isinstance(request.user, AnonymousUser):
|
||||
info['creator'] = None
|
||||
log = OperationLog(**info)
|
||||
log.save()
|
||||
|
||||
def process_request(self, request):
|
||||
self.__handle_request(request)
|
||||
|
||||
def process_response(self, request, response):
|
||||
"""
|
||||
主要请求处理完之后记录
|
||||
:param request:
|
||||
:param response:
|
||||
:return:
|
||||
"""
|
||||
if self.enable:
|
||||
if self.methods == 'ALL' or request.method in self.methods:
|
||||
self.__handle_response(request, response)
|
||||
return response
|
||||
|
||||
|
||||
class PermissionModeMiddleware(MiddlewareMixin):
|
||||
"""
|
||||
权限模式拦截判断
|
||||
"""
|
|
@ -1,3 +1,4 @@
|
|||
from django.db import transaction
|
||||
from rest_framework import mixins
|
||||
from rest_framework import serializers
|
||||
from rest_framework import status
|
||||
|
@ -5,6 +6,8 @@ from rest_framework.relations import ManyRelatedField, RelatedField, PrimaryKeyR
|
|||
from rest_framework.request import Request
|
||||
|
||||
from .response import SuccessResponse
|
||||
from ..utils.export_excel import excel_to_data, export_excel_save_model
|
||||
from ..utils.request_util import get_verbose_name
|
||||
|
||||
|
||||
class CreateModelMixin(mixins.CreateModelMixin):
|
||||
|
@ -33,10 +36,10 @@ class ListModelMixin(mixins.ListModelMixin):
|
|||
list_serializer_class = None
|
||||
|
||||
def list(self, request: Request, *args, **kwargs):
|
||||
queryset = self.filter_queryset(self.get_queryset())
|
||||
page = self.paginate_queryset(queryset)
|
||||
if hasattr(self, 'handle_logging'):
|
||||
self.handle_logging(request, *args, **kwargs)
|
||||
queryset = self.filter_queryset(self.get_queryset())
|
||||
page = self.paginate_queryset(queryset)
|
||||
if page is not None:
|
||||
if getattr(self, 'values_queryset', None):
|
||||
return self.get_paginated_response(page)
|
||||
|
@ -91,11 +94,25 @@ class DestroyModelMixin(mixins.DestroyModelMixin):
|
|||
"""
|
||||
destroy_serializer_class = None
|
||||
|
||||
def get_object_list(self):
|
||||
queryset = self.filter_queryset(self.get_queryset())
|
||||
lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field
|
||||
assert lookup_url_kwarg in self.kwargs, (
|
||||
'Expected view %s to be called with a URL keyword argument '
|
||||
'named "%s". Fix your URL conf, or set the `.lookup_field` '
|
||||
'attribute on the view correctly.' %
|
||||
(self.__class__.__name__, lookup_url_kwarg)
|
||||
)
|
||||
filter_kwargs = {f"{self.lookup_field}__in": self.kwargs[lookup_url_kwarg].split(',')}
|
||||
obj = queryset.filter(**filter_kwargs)
|
||||
self.check_object_permissions(self.request, obj)
|
||||
return obj
|
||||
|
||||
def destroy(self, request: Request, *args, **kwargs):
|
||||
instance = self.get_object()
|
||||
self.perform_destroy(instance)
|
||||
instance = self.get_object_list()
|
||||
if hasattr(self, 'handle_logging'):
|
||||
self.handle_logging(request, instance=instance, *args, **kwargs)
|
||||
self.perform_destroy(instance)
|
||||
return SuccessResponse(status=status.HTTP_204_NO_CONTENT)
|
||||
|
||||
def perform_destroy(self, instance):
|
||||
|
@ -271,3 +288,75 @@ class TableSerializerMixin:
|
|||
info['type'] = 'select'
|
||||
column.append(info)
|
||||
return column
|
||||
|
||||
|
||||
class ImportSerializerMixin:
|
||||
"""
|
||||
自定义导出模板、导入功能
|
||||
"""
|
||||
# 导入字段
|
||||
import_field_data = {}
|
||||
# 导入序列化器
|
||||
import_serializer_class = None
|
||||
|
||||
@transaction.atomic # Django 事物
|
||||
def importTemplate(self, request: Request, *args, **kwargs):
|
||||
"""
|
||||
用户导人模板
|
||||
:param request:
|
||||
:param args:
|
||||
:param kwargs:
|
||||
:return:
|
||||
"""
|
||||
assert self.import_field_data, (
|
||||
"'%s' 请配置对应的导出模板字段。"
|
||||
% self.__class__.__name__
|
||||
)
|
||||
# 导出模板
|
||||
if request.method == 'GET':
|
||||
# 示例数据
|
||||
return SuccessResponse(
|
||||
export_excel_save_model(request, self.import_field_data.values(), [], '导入用户数据模板.xls'))
|
||||
updateSupport = request.data.get('updateSupport')
|
||||
# 从excel中组织对应的数据结构,然后使用序列化器保存
|
||||
data = excel_to_data(request.data.get('file_url'), self.import_field_data)
|
||||
unique_list = [ele.attname for ele in self.get_queryset().model._meta.get_fields() if
|
||||
hasattr(ele, 'unique') and ele.unique == True]
|
||||
for ele in data:
|
||||
# 获取 unique 字段
|
||||
filter_dic = {i: ele.get(i) for i in list(set(self.import_field_data.keys()) & set(unique_list))}
|
||||
instance = self.get_queryset().filter(**filter_dic).first()
|
||||
if instance and not updateSupport:
|
||||
continue
|
||||
if not filter_dic:
|
||||
instance = None
|
||||
serializer = self.import_serializer_class(instance, data=ele)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
serializer.save()
|
||||
return SuccessResponse(msg=f"导入成功!")
|
||||
|
||||
|
||||
class ExportSerializerMixin:
|
||||
"""
|
||||
自定义导出功能
|
||||
"""
|
||||
# 导出字段
|
||||
export_field_data = []
|
||||
# 导出序列化器
|
||||
export_serializer_class = None
|
||||
|
||||
def export(self, request: Request, *args, **kwargs):
|
||||
"""
|
||||
导出功能
|
||||
:param request:
|
||||
:param args:
|
||||
:param kwargs:
|
||||
:return:
|
||||
"""
|
||||
assert self.export_field_data, (
|
||||
"'%s' 请配置对应的导出模板字段。"
|
||||
% self.__class__.__name__
|
||||
)
|
||||
data = self.export_serializer_class(self.get_queryset(), many=True).data
|
||||
return SuccessResponse(export_excel_save_model(request, self.export_field_data, data,
|
||||
f'导出{get_verbose_name(self.get_queryset())}.xls'))
|
|
@ -27,6 +27,7 @@ class CoreModel(models.Model):
|
|||
creator = models.ForeignKey(to='permission.UserProfile', related_query_name='creator_query', null=True,
|
||||
verbose_name='创建者', on_delete=SET_NULL, db_constraint=False) # 创建者
|
||||
modifier = ModifierCharField() # 修改者
|
||||
dept_belong_id = models.CharField(max_length=64, verbose_name="数据归属部门", null=True, blank=True)
|
||||
update_datetime = UpdateDateTimeField() # 修改时间
|
||||
create_datetime = CreateDateTimeField() # 创建时间
|
||||
|
|
@ -15,6 +15,8 @@ class CustomModelSerializer(ModelSerializer):
|
|||
modifier_field_name = 'modifier'
|
||||
# 创建人的审计字段名称, 默认creator, 继承使用时可自定义覆盖
|
||||
creator_field_name = 'creator'
|
||||
# 数据所属部门字段
|
||||
dept_belong_id_field_name = 'dept_belong_id'
|
||||
# 添加默认时间返回格式
|
||||
create_datetime = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True)
|
||||
update_datetime = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True)
|
||||
|
@ -33,6 +35,8 @@ class CustomModelSerializer(ModelSerializer):
|
|||
validated_data[self.modifier_field_name] = username
|
||||
if self.creator_field_name in self.fields.fields:
|
||||
validated_data[self.creator_field_name] = self.request.user
|
||||
if self.dept_belong_id_field_name in self.fields.fields:
|
||||
validated_data[self.dept_belong_id_field_name] = getattr(self.request.user,'dept_id',None)
|
||||
return super().create(validated_data)
|
||||
|
||||
def update(self, instance, validated_data):
|
|
@ -0,0 +1,101 @@
|
|||
import logging
|
||||
import traceback
|
||||
from types import FunctionType, MethodType
|
||||
|
||||
from rest_framework.exceptions import APIException as DRFAPIException
|
||||
from rest_framework.request import Request
|
||||
from rest_framework.views import APIView
|
||||
|
||||
from ..utils import exceptions
|
||||
from ..utils.model_util import ModelRelateUtils
|
||||
from .logging.view_logger import CustomerRelationshipViewLogger
|
||||
from .response import SuccessResponse, ErrorResponse
|
||||
from .serializers import CustomModelSerializer
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def op_exception_handler(ex, context):
|
||||
"""
|
||||
统一异常拦截处理
|
||||
目的:(1)取消所有的500异常响应,统一响应为标准错误返回
|
||||
(2)准确显示错误信息
|
||||
:param ex:
|
||||
:param context:
|
||||
:return:
|
||||
"""
|
||||
msg = ''
|
||||
if isinstance(ex, DRFAPIException):
|
||||
# set_rollback()
|
||||
msg = ex.detail
|
||||
elif isinstance(ex, exceptions.APIException):
|
||||
msg = ex.message
|
||||
elif isinstance(ex, Exception):
|
||||
logger.error(traceback.format_exc())
|
||||
msg = str(ex)
|
||||
return ErrorResponse(msg=msg)
|
||||
|
||||
|
||||
class CustomAPIView(APIView):
|
||||
"""
|
||||
继承、增强DRF的APIView
|
||||
"""
|
||||
extra_permission_classes = ()
|
||||
# 仅当GET方法时会触发该权限的校验
|
||||
GET_permission_classes = ()
|
||||
|
||||
# 仅当POST方法时会触发该权限的校验
|
||||
POST_permission_classes = ()
|
||||
|
||||
# 仅当DELETE方法时会触发该权限的校验
|
||||
DELETE_permission_classes = ()
|
||||
|
||||
# 仅当PUT方法时会触发该权限的校验
|
||||
PUT_permission_classes = ()
|
||||
|
||||
view_logger_classes = ()
|
||||
|
||||
def initial(self, request: Request, *args, **kwargs):
|
||||
super().initial(request, *args, **kwargs)
|
||||
self.check_extra_permissions(request)
|
||||
self.check_method_extra_permissions(request)
|
||||
|
||||
def get_view_loggers(self, request: Request, *args, **kwargs):
|
||||
logger_classes = self.view_logger_classes or []
|
||||
if not logger_classes:
|
||||
return []
|
||||
view_loggers = [logger_class(view=self, request=request, *args, **kwargs) for logger_class in logger_classes]
|
||||
return view_loggers
|
||||
|
||||
def handle_logging(self, request: Request, *args, **kwargs):
|
||||
view_loggers = self.get_view_loggers(request, *args, **kwargs)
|
||||
method = request.method.lower()
|
||||
for view_logger in view_loggers:
|
||||
view_logger.handle(request, *args, **kwargs)
|
||||
logger_fun = getattr(view_logger, f'handle_{method}', f'handle_other')
|
||||
if logger_fun and isinstance(logger_fun, (FunctionType, MethodType)):
|
||||
logger_fun(request, *args, **kwargs)
|
||||
|
||||
def get_extra_permissions(self):
|
||||
return [permission() for permission in self.extra_permission_classes]
|
||||
|
||||
def check_extra_permissions(self, request: Request):
|
||||
for permission in self.get_extra_permissions():
|
||||
if not permission.has_permission(request, self):
|
||||
self.permission_denied(
|
||||
request, message=getattr(permission, 'message', None)
|
||||
)
|
||||
|
||||
def get_method_extra_permissions(self):
|
||||
_name = self.request.method.upper()
|
||||
method_extra_permission_classes = getattr(self, f"{_name}_permission_classes", None)
|
||||
if not method_extra_permission_classes:
|
||||
return []
|
||||
return [permission() for permission in method_extra_permission_classes]
|
||||
|
||||
def check_method_extra_permissions(self, request):
|
||||
for permission in self.get_method_extra_permissions():
|
||||
if not permission.has_permission(request, self):
|
||||
self.permission_denied(
|
||||
request, message=getattr(permission, 'message', None)
|
||||
)
|
|
@ -11,7 +11,7 @@ from rest_framework.request import Request
|
|||
from rest_framework.settings import api_settings
|
||||
from rest_framework.viewsets import ViewSetMixin
|
||||
|
||||
from utils.exceptions import APIException
|
||||
from ..utils.exceptions import APIException
|
||||
from . import mixins
|
||||
from .filters import MongoSearchFilter, MongoOrderingFilter, AdvancedSearchFilter, MongoAdvancedSearchFilter
|
||||
from .generics import GenericAPIView
|
||||
|
@ -201,7 +201,9 @@ class MongoModelViewSet(mixins.CreateModelMixin,
|
|||
pass
|
||||
|
||||
|
||||
class CustomModelViewSet(ModelViewSet, mixins.TableSerializerMixin):
|
||||
class CustomModelViewSet(ModelViewSet, mixins.TableSerializerMixin,
|
||||
mixins.ImportSerializerMixin,
|
||||
mixins.ExportSerializerMixin):
|
||||
"""
|
||||
自定义的ModelViewSet:
|
||||
(1)默认分页器就为统一分页器op_drf.pagination.Pagination
|
|
@ -2,5 +2,5 @@ from django.apps import AppConfig
|
|||
|
||||
|
||||
class PermissionConfig(AppConfig):
|
||||
name = 'system'
|
||||
name = 'apps.vadmin.permission'
|
||||
verbose_name = "权限管理"
|
|
@ -1,12 +1,13 @@
|
|||
import django_filters
|
||||
|
||||
from apps.permission.models import Menu, Dept, Post, Role, UserProfile
|
||||
from ..permission.models import Menu, Dept, Post, Role, UserProfile
|
||||
|
||||
|
||||
class MenuFilter(django_filters.rest_framework.FilterSet):
|
||||
"""
|
||||
菜单管理 简单序过滤器
|
||||
"""
|
||||
name = django_filters.CharFilter(lookup_expr='icontains')
|
||||
|
||||
class Meta:
|
||||
model = Menu
|
||||
|
@ -17,6 +18,7 @@ class DeptFilter(django_filters.rest_framework.FilterSet):
|
|||
"""
|
||||
部门管理 简单序过滤器
|
||||
"""
|
||||
deptName = django_filters.CharFilter(lookup_expr='icontains')
|
||||
|
||||
class Meta:
|
||||
model = Dept
|
||||
|
@ -27,6 +29,7 @@ class PostFilter(django_filters.rest_framework.FilterSet):
|
|||
"""
|
||||
岗位管理 简单序过滤器
|
||||
"""
|
||||
postName = django_filters.CharFilter(lookup_expr='icontains')
|
||||
|
||||
class Meta:
|
||||
model = Post
|
||||
|
@ -37,6 +40,7 @@ class RoleFilter(django_filters.rest_framework.FilterSet):
|
|||
"""
|
||||
角色管理 简单序过滤器
|
||||
"""
|
||||
roleName = django_filters.CharFilter(lookup_expr='icontains')
|
||||
|
||||
class Meta:
|
||||
model = Role
|
||||
|
@ -47,7 +51,10 @@ class UserProfileFilter(django_filters.rest_framework.FilterSet):
|
|||
"""
|
||||
用户管理 简单序过滤器
|
||||
"""
|
||||
username = django_filters.CharFilter(lookup_expr='icontains')
|
||||
mobile = django_filters.CharFilter(lookup_expr='icontains')
|
||||
deptId = django_filters.CharFilter(field_name='dept__id')
|
||||
|
||||
class Meta:
|
||||
model = UserProfile
|
||||
exclude = ('secret', 'password',)
|
|
@ -0,0 +1,102 @@
|
|||
import logging
|
||||
import os
|
||||
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.db import connection
|
||||
|
||||
from ....scripts import getSql
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
"""
|
||||
项目初始化命令: python manage.py initialization
|
||||
"""
|
||||
|
||||
def customSql(self, sql_list, model_name, table_name, is_yes):
|
||||
"""
|
||||
批量执行sql
|
||||
:param sql_list:
|
||||
:param table_name: 表名
|
||||
:return:
|
||||
"""
|
||||
with connection.cursor() as cursor:
|
||||
num = 0
|
||||
for ele in table_name.split(','):
|
||||
cursor.execute("select count(*) from {}".format(ele))
|
||||
result = cursor.fetchone()
|
||||
num += result[0]
|
||||
if num > 0:
|
||||
while True:
|
||||
if is_yes is None:
|
||||
inp = input(f'[{model_name}]模型已初始化完成,继续将清空[{table_name}]表中所有数据,是否继续初始化?【 Y/N 】')
|
||||
else:
|
||||
inp = 'Y' if is_yes == True else 'N'
|
||||
if inp.upper() == 'N':
|
||||
return False
|
||||
elif inp.upper() == 'Y':
|
||||
logger.info(f'正在清空[{table_name}]中数据...')
|
||||
cursor.execute("SET foreign_key_checks = 0")
|
||||
for ele in table_name.split(','):
|
||||
cursor.execute("truncate table {};".format(ele))
|
||||
cursor.execute("SET foreign_key_checks = 1")
|
||||
connection.commit()
|
||||
logger.info(f'清空[{table_name}]中数据{result[0]}条')
|
||||
break
|
||||
|
||||
for sql in sql_list:
|
||||
try:
|
||||
cursor.execute(sql)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
connection.commit()
|
||||
return True
|
||||
|
||||
def init(self, sql_filename, model_name, table_name, is_yes):
|
||||
"""
|
||||
初始化
|
||||
:param sql_filename: sql存放位置
|
||||
:param model_name: 模块名
|
||||
:param table_name: 表名
|
||||
:return:
|
||||
"""
|
||||
logger.info(f'正在初始化[{model_name}]中...')
|
||||
if self.customSql(getSql(sql_filename), model_name, table_name, is_yes):
|
||||
logger.info(f'[{model_name}]初始化完成!')
|
||||
else:
|
||||
logger.info(f'已取消[{table_name}]初始化')
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument('init_name', nargs='*', type=str, )
|
||||
parser.add_argument('-y', nargs='*')
|
||||
parser.add_argument('-Y', nargs='*')
|
||||
parser.add_argument('-n', nargs='*')
|
||||
parser.add_argument('-N', nargs='*')
|
||||
|
||||
def handle(self, *args, **options):
|
||||
init_dict = {
|
||||
'system_dictdata': [os.path.join('system', 'system_dictdata.sql'), '字典管理', 'system_dictdata'],
|
||||
'system_dictdetails': [os.path.join('system', 'system_dictdetails.sql'), '字典详情', 'system_dictdetails'],
|
||||
'system_configsettings': [os.path.join('system', 'system_configsettings.sql'), '参数设置',
|
||||
'system_configsettings'],
|
||||
'permission_post': [os.path.join('permission', 'permission_post.sql'), '岗位管理', 'permission_post'],
|
||||
'permission_dept': [os.path.join('permission', 'permission_dept.sql'), '部门管理', 'permission_dept'],
|
||||
'permission_menu': [os.path.join('permission', 'permission_menu.sql'), '菜单管理', 'permission_menu'],
|
||||
'permission_role': [os.path.join('permission', 'permission_role.sql'), '角色管理',
|
||||
','.join(['permission_role', 'permission_role_dept', 'permission_role_menu'])],
|
||||
'permission_userprofile': [os.path.join('permission', 'permission_userprofile.sql'), '用户管理', ','.join(
|
||||
['permission_userprofile_groups', 'permission_userprofile', 'permission_userprofile_role',
|
||||
'permission_userprofile_post'])]
|
||||
}
|
||||
init_name = options.get('init_name')
|
||||
is_yes = None
|
||||
if isinstance(options.get('y'), list) or isinstance(options.get('Y'), list):
|
||||
is_yes = True
|
||||
if isinstance(options.get('n'), list) or isinstance(options.get('N'), list):
|
||||
is_yes = False
|
||||
if init_name:
|
||||
[self.init(*init_dict[ele], is_yes=is_yes) for ele in init_name if ele in init_dict]
|
||||
else:
|
||||
for ele in init_dict.values():
|
||||
self.init(*ele, is_yes=is_yes)
|
|
@ -1,7 +1,7 @@
|
|||
from django.db.models import CASCADE
|
||||
from django.db.models import CharField, IntegerField, ForeignKey
|
||||
|
||||
from apps.op_drf.models import CoreModel
|
||||
from ...op_drf.models import CoreModel
|
||||
|
||||
|
||||
class Dept(CoreModel):
|
|
@ -1,6 +1,6 @@
|
|||
from django.db.models import IntegerField, ForeignKey, CharField, CASCADE
|
||||
|
||||
from apps.op_drf.models import CoreModel
|
||||
from ...op_drf.models import CoreModel
|
||||
|
||||
|
||||
class Menu(CoreModel):
|
|
@ -1,6 +1,6 @@
|
|||
from django.db.models import IntegerField, BooleanField, CharField, TextField
|
||||
|
||||
from apps.op_drf.models import CoreModel
|
||||
from ...op_drf.models import CoreModel
|
||||
|
||||
|
||||
class Post(CoreModel):
|
|
@ -1,6 +1,6 @@
|
|||
from django.db.models import IntegerField, BooleanField, CharField, TextField, ManyToManyField
|
||||
|
||||
from apps.op_drf.models import CoreModel
|
||||
from ...op_drf.models import CoreModel
|
||||
|
||||
|
||||
class Role(CoreModel):
|
|
@ -3,7 +3,7 @@ from uuid import uuid4
|
|||
from django.contrib.auth.models import UserManager, AbstractUser
|
||||
from django.db.models import IntegerField, ForeignKey, CharField, TextField, ManyToManyField, CASCADE
|
||||
|
||||
from apps.op_drf.fields import CreateDateTimeField, UpdateDateTimeField
|
||||
from ...op_drf.fields import CreateDateTimeField, UpdateDateTimeField
|
||||
|
||||
|
||||
class UserProfile(AbstractUser):
|
||||
|
@ -24,6 +24,7 @@ class UserProfile(AbstractUser):
|
|||
post = ManyToManyField(to='Post', verbose_name='关联岗位', db_constraint=False)
|
||||
role = ManyToManyField(to='Role', verbose_name='关联角色', db_constraint=False)
|
||||
dept = ForeignKey(to='Dept', verbose_name='归属部门', on_delete=CASCADE, db_constraint=False, null=True, blank=True)
|
||||
dept_belong_id = CharField(max_length=64, verbose_name="数据归属部门", null=True, blank=True)
|
||||
create_datetime = CreateDateTimeField()
|
||||
update_datetime = UpdateDateTimeField()
|
||||
|
|
@ -1,8 +1,10 @@
|
|||
from rest_framework import serializers
|
||||
from rest_framework.fields import empty
|
||||
from rest_framework.validators import UniqueValidator
|
||||
|
||||
from apps.op_drf.serializers import CustomModelSerializer
|
||||
from apps.permission.models import Menu, Dept, Post, Role, UserProfile
|
||||
from ..op_drf.serializers import CustomModelSerializer
|
||||
from ..permission.models import Menu, Dept, Post, Role, UserProfile
|
||||
from ..system.models import MessagePush
|
||||
|
||||
|
||||
# ================================================= #
|
||||
|
@ -212,7 +214,7 @@ class UserProfileSerializer(CustomModelSerializer):
|
|||
admin = serializers.SerializerMethodField(read_only=True)
|
||||
deptId = serializers.IntegerField(source='dept.id', read_only=True)
|
||||
# 未读通知数量
|
||||
# unread_msg_count = serializers.SerializerMethodField(read_only=True)
|
||||
unread_msg_count = serializers.SerializerMethodField(read_only=True)
|
||||
|
||||
def get_admin(self, obj: UserProfile):
|
||||
role_list = obj.role.all().values_list('admin', flat=True)
|
||||
|
@ -220,12 +222,8 @@ class UserProfileSerializer(CustomModelSerializer):
|
|||
return True
|
||||
return False
|
||||
|
||||
# def get_unread_msg_count(self, obj: UserProfile):
|
||||
# UserProfile.objects.all()
|
||||
# role_list = obj.role.all().values_list('admin', flat=True)
|
||||
# if True in list(set(role_list)):
|
||||
# return True
|
||||
# return False
|
||||
def get_unread_msg_count(self, obj: UserProfile):
|
||||
return MessagePush.objects.filter(status='2').exclude(user=obj,messagepushuser_message_push__is_read=True).count()
|
||||
|
||||
class Meta:
|
||||
model = UserProfile
|
||||
|
@ -288,3 +286,25 @@ class UserProfileCreateUpdateSerializer(CustomModelSerializer):
|
|||
model = UserProfile
|
||||
exclude = ('password', 'secret', 'user_permissions', 'groups', 'is_superuser', 'date_joined')
|
||||
read_only_fields = ('dept',)
|
||||
|
||||
class UserProfileImportSerializer(CustomModelSerializer):
|
||||
|
||||
def save(self, **kwargs):
|
||||
data = super().save(**kwargs)
|
||||
data.set_password(self.initial_data.get('password', None))
|
||||
data.save()
|
||||
return data
|
||||
|
||||
def run_validation(self, data={}):
|
||||
# 把excel 数据进行格式转换
|
||||
if type(data) is dict:
|
||||
data['role'] = str(data['role']).split(',')
|
||||
data['post'] = str(data['post']).split(',')
|
||||
data['gender'] = {'男': '0', '女': '1', '未知': '2'}.get(data['gender'])
|
||||
data['is_active'] = {'启用': True, '禁用': False}.get(data['is_active'])
|
||||
return super().run_validation(data)
|
||||
|
||||
|
||||
class Meta:
|
||||
model = UserProfile
|
||||
exclude = ('password', 'secret', 'user_permissions', 'groups', 'is_superuser', 'date_joined')
|
|
@ -1,7 +1,7 @@
|
|||
from django.urls import re_path
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
from apps.permission.views import MenuModelViewSet, DeptModelViewSet, PostModelViewSet, RoleModelViewSet, \
|
||||
from ..permission.views import MenuModelViewSet, DeptModelViewSet, PostModelViewSet, RoleModelViewSet, \
|
||||
UserProfileModelViewSet
|
||||
|
||||
router = DefaultRouter()
|
||||
|
@ -29,13 +29,16 @@ urlpatterns = [
|
|||
# 用户自己重置密码
|
||||
re_path('user/profile/updatePwd/', UserProfileModelViewSet.as_view({'put': 'update_pwd'})),
|
||||
# 获取、更新用户个人信息
|
||||
re_path('user/profile/', UserProfileModelViewSet.as_view({'get': 'profile','put': 'put_profile'})),
|
||||
re_path('user/profile/', UserProfileModelViewSet.as_view({'get': 'profile', 'put': 'put_profile'})),
|
||||
# 导出用户
|
||||
re_path('user/export/', UserProfileModelViewSet.as_view({'get': 'export',})),
|
||||
re_path('user/export/', UserProfileModelViewSet.as_view({'get': 'export', })),
|
||||
# 导出角色
|
||||
re_path('role/export/', RoleModelViewSet.as_view({'get': 'export',})),
|
||||
re_path('role/export/', RoleModelViewSet.as_view({'get': 'export', })),
|
||||
# 导出岗位
|
||||
re_path('post/export/', PostModelViewSet.as_view({'get': 'export',})),
|
||||
re_path('post/export/', PostModelViewSet.as_view({'get': 'export', })),
|
||||
# 用户导入模板下载及导入
|
||||
re_path('user/importTemplate/',
|
||||
UserProfileModelViewSet.as_view({'get': 'importTemplate', 'post': 'importTemplate'})),
|
||||
|
||||
]
|
||||
urlpatterns += router.urls
|
|
@ -2,16 +2,18 @@ from django.contrib.auth import authenticate
|
|||
from rest_framework.request import Request
|
||||
from rest_framework.views import APIView
|
||||
|
||||
from apps.op_drf.viewsets import CustomModelViewSet
|
||||
from apps.permission.filters import MenuFilter, DeptFilter, PostFilter, RoleFilter, UserProfileFilter
|
||||
from apps.permission.models import Role, Menu, Dept, Post, UserProfile
|
||||
from apps.permission.serializers import UserProfileSerializer, MenuSerializer, RoleSerializer, \
|
||||
from ..op_drf.filters import DataLevelPermissionsFilter
|
||||
from ..op_drf.viewsets import CustomModelViewSet
|
||||
from ..permission.filters import MenuFilter, DeptFilter, PostFilter, RoleFilter, UserProfileFilter
|
||||
from ..permission.models import Role, Menu, Dept, Post, UserProfile
|
||||
from ..permission.serializers import UserProfileSerializer, MenuSerializer, RoleSerializer, \
|
||||
MenuCreateUpdateSerializer, DeptSerializer, DeptCreateUpdateSerializer, PostSerializer, PostCreateUpdateSerializer, \
|
||||
RoleCreateUpdateSerializer, DeptTreeSerializer, MenuTreeSerializer, UserProfileCreateUpdateSerializer, \
|
||||
PostSimpleSerializer, RoleSimpleSerializer, ExportUserProfileSerializer, ExportRoleSerializer, ExportPostSerializer
|
||||
from apps.op_drf.filters import DataLevelPermissionsFilter
|
||||
from utils.export_excel import export_excel_save_model
|
||||
from utils.response import SuccessResponse, ErrorResponse
|
||||
PostSimpleSerializer, RoleSimpleSerializer, ExportUserProfileSerializer, ExportRoleSerializer, ExportPostSerializer, \
|
||||
UserProfileImportSerializer
|
||||
from ..system.models import DictDetails
|
||||
from ..utils.export_excel import export_excel_save_model, excel_to_data
|
||||
from ..utils.response import SuccessResponse, ErrorResponse
|
||||
|
||||
|
||||
class GetUserProfileView(APIView):
|
||||
|
@ -21,7 +23,7 @@ class GetUserProfileView(APIView):
|
|||
|
||||
def get(self, request, format=None):
|
||||
user_dict = UserProfileSerializer(request.user).data
|
||||
permissions_list = ["*:*:*"] if user_dict.get('admin') else Menu.objects.filter(
|
||||
permissions_list = ['*:*:*'] if user_dict.get('admin') else Menu.objects.filter(
|
||||
role__userprofile=request.user).values_list('perms', flat=True)
|
||||
return SuccessResponse({
|
||||
'permissions': [ele for ele in permissions_list if ele],
|
||||
|
@ -46,25 +48,27 @@ class GetRouters(APIView):
|
|||
|
||||
def get(self, request, format=None):
|
||||
# data = GetUserInfoSerializer(request.user).data
|
||||
menus = Menu.objects.filter(role__userprofile=request.user).exclude(menuType="2").values('id', 'name',
|
||||
menus = Menu.objects.filter(role__userprofile=request.user).exclude(menuType='2').values('id', 'name',
|
||||
'web_path',
|
||||
'visible', 'status',
|
||||
'isFrame',
|
||||
'component_path',
|
||||
'icon', 'parentId',
|
||||
'isCache').distinct()
|
||||
# data = '{"msg":"操作成功","code":200,"data":[{"name":"System","path":"/system","hidden":false,"redirect":"noRedirect","component":"Layout","alwaysShow":true,"meta":{"title":"系统管理","icon":"system","noCache":false},"children":[{"name":"User","path":"user","hidden":false,"component":"permission/user/index","meta":{"title":"用户管理","icon":"user","noCache":false}},{"name":"Role","path":"role","hidden":false,"component":"permission/role/index","meta":{"title":"角色管理","icon":"peoples","noCache":false}},{"name":"Menu","path":"menu","hidden":false,"component":"permission/menu/index","meta":{"title":"菜单管理","icon":"tree-table","noCache":false}},{"name":"Dept","path":"dept","hidden":false,"component":"permission/dept/index","meta":{"title":"部门管理","icon":"tree","noCache":false}},{"name":"Post","path":"post","hidden":false,"component":"permission/post/index","meta":{"title":"岗位管理","icon":"post","noCache":false}},{"name":"Dict","path":"dict","hidden":false,"component":"system/dict/index","meta":{"title":"字典管理","icon":"dict","noCache":false}},{"name":"Config","path":"config","hidden":false,"component":"system/config/index","meta":{"title":"参数设置","icon":"edit","noCache":false}},{"name":"Notice","path":"notice","hidden":false,"component":"system/notice/index","meta":{"title":"通知公告","icon":"message","noCache":false}},{"name":"Log","path":"log","hidden":false,"redirect":"noRedirect","component":"ParentView","alwaysShow":true,"meta":{"title":"日志管理","icon":"log","noCache":false},"children":[{"name":"Operlog","path":"operlog","hidden":false,"component":"monitor/operlog/index","meta":{"title":"操作日志","icon":"form","noCache":false}},{"name":"Logininfor","path":"logininfor","hidden":false,"component":"monitor/logininfor/index","meta":{"title":"登录日志","icon":"logininfor","noCache":false}}]}]},{"name":"Monitor","path":"/monitor","hidden":false,"redirect":"noRedirect","component":"Layout","alwaysShow":true,"meta":{"title":"系统监控","icon":"monitor","noCache":false},"children":[{"name":"Online","path":"online","hidden":false,"component":"monitor/online/index","meta":{"title":"在线用户","icon":"online","noCache":false}},{"name":"Job","path":"job","hidden":false,"component":"monitor/job/index","meta":{"title":"定时任务","icon":"job","noCache":false}},{"name":"Druid","path":"druid","hidden":false,"component":"monitor/druid/index","meta":{"title":"数据监控","icon":"druid","noCache":false}},{"name":"Server","path":"server","hidden":false,"component":"monitor/server/index","meta":{"title":"服务监控","icon":"server","noCache":false}},{"name":"Cache","path":"cache","hidden":false,"component":"monitor/cache/index","meta":{"title":"缓存监控","icon":"redis","noCache":false}}]},{"name":"Tool","path":"/tool","hidden":false,"redirect":"noRedirect","component":"Layout","alwaysShow":true,"meta":{"title":"系统工具","icon":"tool","noCache":false},"children":[{"name":"Build","path":"build","hidden":false,"component":"tool/build/index","meta":{"title":"表单构建","icon":"build","noCache":false}},{"name":"Gen","path":"gen","hidden":false,"component":"tool/gen/index","meta":{"title":"代码生成","icon":"code","noCache":false}},{"name":"Swagger","path":"swagger","hidden":false,"component":"tool/swagger/index","meta":{"title":"系统接口","icon":"swagger","noCache":false}}]},{"name":"Http://ruoyi.vip","path":"http://ruoyi.vip","hidden":false,"component":"Layout","meta":{"title":"若依官网","icon":"guide","noCache":false}}]}'
|
||||
# data = '{'msg':'操作成功','code':200,'data':[{'name':'System','path':'/system','hidden':false,'redirect':'noRedirect','component':'Layout','alwaysShow':true,'meta':{'title':'系统管理','icon':'system','noCache':false},'children':[{'name':'User','path':'user','hidden':false,'component':'permission/user/index','meta':{'title':'用户管理','icon':'user','noCache':false}},{'name':'Role','path':'role','hidden':false,'component':'permission/role/index','meta':{'title':'角色管理','icon':'peoples','noCache':false}},{'name':'Menu','path':'menu','hidden':false,'component':'permission/menu/index','meta':{'title':'菜单管理','icon':'tree-table','noCache':false}},{'name':'Dept','path':'dept','hidden':false,'component':'permission/dept/index','meta':{'title':'部门管理','icon':'tree','noCache':false}},{'name':'Post','path':'post','hidden':false,'component':'permission/post/index','meta':{'title':'岗位管理','icon':'post','noCache':false}},{'name':'Dict','path':'dict','hidden':false,'component':'system/dict/index','meta':{'title':'字典管理','icon':'dict','noCache':false}},{'name':'Config','path':'config','hidden':false,'component':'system/config/index','meta':{'title':'参数设置','icon':'edit','noCache':false}},{'name':'Notice','path':'notice','hidden':false,'component':'system/notice/index','meta':{'title':'通知公告','icon':'message','noCache':false}},{'name':'Log','path':'log','hidden':false,'redirect':'noRedirect','component':'ParentView','alwaysShow':true,'meta':{'title':'日志管理','icon':'log','noCache':false},'children':[{'name':'Operlog','path':'operlog','hidden':false,'component':'monitor/operlog/index','meta':{'title':'操作日志','icon':'form','noCache':false}},{'name':'Logininfor','path':'logininfor','hidden':false,'component':'monitor/logininfor/index','meta':{'title':'登录日志','icon':'logininfor','noCache':false}}]}]},{'name':'Monitor','path':'/monitor','hidden':false,'redirect':'noRedirect','component':'Layout','alwaysShow':true,'meta':{'title':'系统监控','icon':'monitor','noCache':false},'children':[{'name':'Online','path':'online','hidden':false,'component':'monitor/online/index','meta':{'title':'在线用户','icon':'online','noCache':false}},{'name':'Job','path':'job','hidden':false,'component':'monitor/job/index','meta':{'title':'定时任务','icon':'job','noCache':false}},{'name':'Druid','path':'druid','hidden':false,'component':'monitor/druid/index','meta':{'title':'数据监控','icon':'druid','noCache':false}},{'name':'Server','path':'server','hidden':false,'component':'monitor/server/index','meta':{'title':'服务监控','icon':'server','noCache':false}},{'name':'Cache','path':'cache','hidden':false,'component':'monitor/cache/index','meta':{'title':'缓存监控','icon':'redis','noCache':false}}]},{'name':'Tool','path':'/tool','hidden':false,'redirect':'noRedirect','component':'Layout','alwaysShow':true,'meta':{'title':'系统工具','icon':'tool','noCache':false},'children':[{'name':'Build','path':'build','hidden':false,'component':'tool/build/index','meta':{'title':'表单构建','icon':'build','noCache':false}},{'name':'Gen','path':'gen','hidden':false,'component':'tool/gen/index','meta':{'title':'代码生成','icon':'code','noCache':false}},{'name':'Swagger','path':'swagger','hidden':false,'component':'tool/swagger/index','meta':{'title':'系统接口','icon':'swagger','noCache':false}}]},{'name':'Http://ruoyi.vip','path':'http://ruoyi.vip','hidden':false,'component':'Layout','meta':{'title':'若依官网','icon':'guide','noCache':false}}]}'
|
||||
# data = json.loads(data)
|
||||
data = []
|
||||
sys_show_hide = DictDetails.get_default_dictValue('sys_show_hide')
|
||||
for ele in menus:
|
||||
data.append({
|
||||
'id': ele.get('id'),
|
||||
'name': ''.join([i.capitalize() for i in ele.get('web_path', '').split('/')]),
|
||||
'name': ele.get('web_path', '').split('/')[-1] and ele.get('web_path', '').split('/')[-1].capitalize(),
|
||||
'path': ele.get('web_path'),
|
||||
'hidden': True if ele.get('visible') != '1' else False,
|
||||
'redirect': ele.get('web_path') if ele.get('isFrame') == '1' else 'noRedirect',
|
||||
'component': ele.get('component_path') or 'Layout',
|
||||
'meta': {"title": ele.get('name'), "icon": ele.get('icon'), "noCache": ele.get('isCache')},
|
||||
'meta': {'title': ele.get('name'), 'icon': ele.get('icon'),
|
||||
'noCache': True if ele.get('isCache') == sys_show_hide else False},
|
||||
'parentId': ele.get('parentId')
|
||||
})
|
||||
return SuccessResponse(data)
|
||||
|
@ -252,6 +256,15 @@ class UserProfileModelViewSet(CustomModelViewSet):
|
|||
update_serializer_class = UserProfileCreateUpdateSerializer
|
||||
filter_class = UserProfileFilter
|
||||
extra_filter_backends = [DataLevelPermissionsFilter]
|
||||
# 导出
|
||||
export_serializer_class = ExportUserProfileSerializer
|
||||
export_field_data = ['用户序号', '登录名称', '用户名称', '用户邮箱', '手机号码', '用户性别', '帐号状态', '最后登录时间', '部门名称', '部门负责人']
|
||||
# 导入
|
||||
import_serializer_class = UserProfileImportSerializer
|
||||
import_field_data = {'username': '登录账号', 'name': '用户名称', 'email': '用户邮箱', 'mobile': '手机号码',
|
||||
'gender': '用户性别(男/女/未知)',
|
||||
'is_active': '帐号状态(启用/禁用)', 'password': '登录密码', 'dept': '部门ID', 'role': '角色ID',
|
||||
'post': '岗位ID'}
|
||||
# update_extra_permission_classes = (IsManagerPermission,)
|
||||
# destroy_extra_permission_classes = (IsManagerPermission,)
|
||||
# create_extra_permission_classes = (IsManagerPermission,)
|
||||
|
@ -364,15 +377,3 @@ class UserProfileModelViewSet(CustomModelViewSet):
|
|||
if hasattr(self, 'handle_logging'):
|
||||
self.handle_logging(request, instance=instance, *args, **kwargs)
|
||||
return SuccessResponse(serializer.data)
|
||||
|
||||
def export(self, request: Request, *args, **kwargs):
|
||||
"""
|
||||
导出用户
|
||||
:param request:
|
||||
:param args:
|
||||
:param kwargs:
|
||||
:return:
|
||||
"""
|
||||
field_data = ['用户序号', '登录名称', '用户名称', '用户邮箱', '手机号码', '用户性别', '帐号状态', '最后登录时间', '部门名称', '部门负责人']
|
||||
data = ExportUserProfileSerializer(UserProfile.objects.all(), many=True).data
|
||||
return SuccessResponse(export_excel_save_model(request, field_data, data, '导出用户数据.xls'))
|
|
@ -7,7 +7,8 @@ def getSql(filename):
|
|||
:param filename: 例如:os.path.join('permission','permission_dept.sql')
|
||||
:return:
|
||||
"""
|
||||
pwd = os.path.join(os.getcwd(), 'scripts', filename)
|
||||
abspath = os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(__file__)), ".."))
|
||||
pwd = os.path.join(abspath, 'scripts', filename)
|
||||
with open(pwd,'rb') as fp:
|
||||
content = fp.read().decode('utf8')
|
||||
return [ele for ele in content.split('\n') if not ele.startswith('--') and ele]
|
||||
return [ele for ele in content.split('\n') if not ele.startswith('--') and ele.strip(' ')]
|
|
@ -0,0 +1,42 @@
|
|||
-- ----------------------------
|
||||
-- 部门管理 初始化sql
|
||||
-- Table structure for permission_dept
|
||||
-- ----------------------------
|
||||
-- DROP TABLE IF EXISTS `permission_dept`;
|
||||
-- CREATE TABLE `permission_dept` (
|
||||
-- `id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
-- `description` longtext,
|
||||
-- `creator` varchar(255) DEFAULT NULL,
|
||||
-- `modifier` varchar(255) DEFAULT NULL,
|
||||
-- `update_datetime` datetime(6) DEFAULT NULL,
|
||||
-- `create_datetime` datetime(6) DEFAULT NULL,
|
||||
-- `deptName` varchar(64) NOT NULL,
|
||||
-- `orderNum` int(11) NOT NULL,
|
||||
-- `owner` varchar(32) DEFAULT NULL,
|
||||
-- `phone` varchar(32) DEFAULT NULL,
|
||||
-- `email` varchar(32) DEFAULT NULL,
|
||||
-- `status` varchar(8) DEFAULT NULL,
|
||||
-- `parentId_id` int(11) DEFAULT NULL,
|
||||
-- PRIMARY KEY (`id`),
|
||||
-- KEY `permission_dept_parentId_id_43a4fd49` (`parentId_id`) USING BTREE
|
||||
-- ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of permission_dept
|
||||
-- ----------------------------
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (1, '', 'admin', '2021-02-27 07:26:20.518695', '2021-02-27 15:18:39.000000', 'XX创新科技', 1, NULL, '15888888888', 'cxkj@qq.com', '1', 1,NULL, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (2, '', 'admin', '2021-02-27 07:25:09.041807', '2021-02-27 07:25:09.041853', '北京总公司', 1, NULL, NULL, NULL, '1', 1, 1, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (3, '', 'admin', '2021-02-27 07:26:14.418894', '2021-02-27 07:25:25.195849', '上海分公司', 2, NULL, NULL, NULL, '1', 1, 1, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (4, '', 'admin', '2021-02-27 07:26:01.993095', '2021-02-27 07:25:38.904644', '杭州分公司', 4, NULL, NULL, NULL, '1', 1, 1, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (5, '', 'admin', '2021-02-27 07:28:15.854856', '2021-02-27 07:25:54.379081', '深圳分公司', 3, NULL, NULL, NULL, '0', 1, 1, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (6, '', 'admin', '2021-02-27 07:26:37.589741', '2021-02-27 07:26:37.589780', '研发部门', 1, NULL, NULL, NULL, '1', 1, 2, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (7, '', 'admin', '2021-02-27 07:26:47.781467', '2021-02-27 07:26:47.781511', '市场部门', 2, NULL, NULL, NULL, '1', 1, 2, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (8, '', 'admin', '2021-02-27 07:26:57.059878', '2021-02-27 07:26:57.059923', '测试部门', 3, NULL, NULL, NULL, '1', 1, 2, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (9, '', 'admin', '2021-02-27 07:27:06.088134', '2021-02-27 07:27:06.088178', '财务部门', 4, NULL, NULL, NULL, '1', 1, 2, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (10, '', 'admin', '2021-02-27 07:27:15.287731', '2021-02-27 07:27:15.287772', '运维部门', 5, NULL, NULL, NULL, '1', 1, 2, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (11, '', 'admin', '2021-02-27 07:27:24.834369', '2021-02-27 07:27:24.834413', '市场部门', 1, NULL, NULL, NULL, '1', 1, 3, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (12, '', 'admin', '2021-02-27 07:27:34.161898', '2021-02-27 07:27:34.161944', '财务部门', 2, NULL, NULL, NULL, '1', 1, 3, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (13, '', 'admin', '2021-02-27 07:28:20.474025', '2021-02-27 07:27:47.938676', '市场部门', 1, NULL, NULL, NULL, '0', 1, 5, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (14, '', 'admin', '2021-02-27 07:28:23.394188', '2021-02-27 07:27:53.794331', '财务部门', 2, NULL, NULL, NULL, '0', 1, 5, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (15, '', 'admin', '2021-02-27 07:28:03.368497', '2021-02-27 07:28:03.368540', '市场部门', 1, NULL, NULL, NULL, '1', 1, 4, 1);
|
||||
INSERT INTO `permission_dept` (id, description, modifier, update_datetime, create_datetime, deptName, orderNum, owner, phone, email, status, creator_id, parentId_id, dept_belong_id) VALUES (16, '', 'admin', '2021-02-27 07:28:10.532392', '2021-02-27 07:28:10.532436', '财务部门', 2, NULL, NULL, NULL, '1', 1, 4, 1);
|
|
@ -0,0 +1,121 @@
|
|||
-- ----------------------------
|
||||
-- 菜单管理初始化sql
|
||||
-- Table structure for permission_menu
|
||||
-- ----------------------------
|
||||
-- DROP TABLE IF EXISTS `permission_menu`;
|
||||
-- CREATE TABLE `permission_menu` (
|
||||
-- `id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
-- `description` longtext,
|
||||
-- `creator` varchar(255) DEFAULT NULL,
|
||||
-- `modifier` varchar(255) DEFAULT NULL,
|
||||
-- `update_datetime` datetime(6) DEFAULT NULL,
|
||||
-- `create_datetime` datetime(6) DEFAULT NULL,
|
||||
-- `menuType` varchar(8) NOT NULL,
|
||||
-- `icon` varchar(64) DEFAULT NULL,
|
||||
-- `name` varchar(64) NOT NULL,
|
||||
-- `orderNum` int(11) NOT NULL,
|
||||
-- `isFrame` varchar(8) NOT NULL,
|
||||
-- `web_path` varchar(128) DEFAULT NULL,
|
||||
-- `component_path` varchar(128) DEFAULT NULL,
|
||||
-- `interface_path` varchar(256) DEFAULT NULL,
|
||||
-- `interface_method` varchar(16) NOT NULL,
|
||||
-- `perms` varchar(256) DEFAULT NULL,
|
||||
-- `status` varchar(8) NOT NULL,
|
||||
-- `visible` varchar(8) NOT NULL,
|
||||
-- `isCache` varchar(8) NOT NULL,
|
||||
-- `parentId_id` int(11) DEFAULT NULL,
|
||||
-- PRIMARY KEY (`id`),
|
||||
-- KEY `permission_menu_parentId_id_df49c7ef_fk_permission_menu_id` (`parentId_id`),
|
||||
-- CONSTRAINT `permission_menu_parentId_id_df49c7ef_fk_permission_menu_id` FOREIGN KEY (`parentId_id`) REFERENCES `permission_menu` (`id`)
|
||||
-- ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of permission_menu
|
||||
-- ----------------------------
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (1, '', 'admin', '2021-02-27 07:50:00.410101', '2021-02-27 07:41:28.660364', '0', 'system', '系统管理', 1, '1', '/system', '', '', 'GET', NULL, '1', '1', '1', 1, NULL, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (2, '', 'admin', '2021-02-27 07:51:14.500722', '2021-02-27 07:51:14.500768', '0', 'peoples', '权限管理', 2, '1', '/permission', '', '', 'GET', NULL, '1', '1', '1', 1, NULL, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (3, '', 'admin', '2021-03-16 14:50:55.740451', '2021-02-27 07:54:38.630670', '1', 'dict', '字典管理', 1, '1', 'dict', 'vadmin/system/dict/index', '', 'GET', '', '1', '1', '1', 1, 1, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (4, '', 'admin', '2021-03-16 14:51:07.813189', '2021-02-27 08:06:51.019173', '1', 'edit', '参数管理', 2, '1', '/system/config', 'vadmin/system/config/index', '', 'GET', '', '1', '1', '1', 1, 1, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (5, '', 'admin', '2021-03-16 14:51:36.950198', '2021-02-27 08:25:37.339270', '1', 'post', '岗位管理', 1, '1', '/permission/post', 'vadmin/permission/post/index', '', 'GET', '', '1', '1', '1', 1, 2, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (6, '', 'admin', '2021-03-16 14:52:06.412883', '2021-02-27 08:26:48.454553', '1', 'tree', '部门管理', 2, '1', '/permission/dept', 'vadmin/permission/dept/index', '', 'GET', '', '1', '1', '1', 1, 2, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (7, '', 'admin', '2021-03-16 14:52:12.835100', '2021-02-27 08:28:20.411164', '1', 'tree-table', '菜单管理', 3, '1', '/permission/menu', 'vadmin/permission/menu/index', '', 'GET', '', '1', '1', '0', 1, 2, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (8, '', 'admin', '2021-03-16 14:52:31.046775', '2021-02-27 08:29:30.153361', '1', 'peoples', '角色管理', 4, '1', '/permission/role', 'vadmin/permission/role/index', '', 'GET', '', '1', '1', '1', 1, 2, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (9, '', 'admin', '2021-03-16 14:52:39.106512', '2021-02-27 08:30:14.030888', '1', 'user', '用户管理', 5, '1', '/permission/user', 'vadmin/permission/user/index', '', 'GET', '', '1', '1', '1', 1, 2, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (10, '', 'admin', '2021-02-27 08:37:24.948235', '2021-02-27 08:36:04.824117', '0', 'guide', 'dvAdmin官网', 9, '0', 'https://django-vue-admin.com', '', NULL, 'GET', NULL, '1', '1', '1', 1, NULL, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (11, '', 'admin', '2021-03-16 14:51:15.042512', '2021-02-27 16:17:36.685174', '1', 'job', '文件管理', 3, '1', '/system/savefile', 'vadmin/system/savefile/index', '', 'GET', '', '1', '1', '1', 1, 1, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (13, '', 'admin', '2021-03-03 14:41:08.227821', '2021-03-03 14:18:52.530449', '2', NULL, '用户新增', 1, '1', NULL, NULL, '/admin/permission/user/', 'POST', 'permission:user:post', '1', '1', '1', 1, 9, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (14, '', 'admin', '2021-03-03 14:43:34.207938', '2021-03-03 14:43:34.208093', '2', NULL, '用户修改', 2, '1', NULL, NULL, '/admin/permission/user/{id}/', 'PUT', 'permission:user:{id}:put', '1', '1', '1', 1, 9, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (15, '', 'admin', '2021-03-03 14:44:58.006289', '2021-03-03 14:44:58.006338', '2', NULL, '用户删除', 3, '1', '', NULL, '/admin/permission/user/{id}/', 'DELETE', 'permission:user:{id}:delete', '1', '1', '1', 1, 9, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (16, '', 'admin', '2021-03-03 14:45:50.575443', '2021-03-03 14:45:50.575507', '2', NULL, '用户导出', 4, '1', NULL, NULL, '/admin/permission/user/export/', 'GET', 'permission:user:export:get', '1', '1', '1', 1, 9, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (17, '', 'admin', '2021-03-03 14:51:14.157310', '2021-03-03 14:51:14.157447', '2', NULL, '用户导入', 5, '1', NULL, NULL, '/admin/permission/user/import/', 'POST', 'permission:user:import:post', '1', '1', '1', 1, 9, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (18, '', 'admin', '2021-03-03 14:51:51.220886', '2021-03-03 14:51:51.220933', '2', NULL, '重置密码', 6, '1', NULL, NULL, '/admin/permission/user/resetPwd/', 'PUT', 'permission:user:resetpwd:put', '1', '1', '1', 1, 9, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (19, '', 'admin', '2021-03-03 14:53:47.877063', '2021-03-03 14:53:47.877116', '2', NULL, '角色新增', 1, '1', NULL, NULL, '/admin/permission/role/', 'POST', 'permission:role:post', '1', '1', '1', 1, 8, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (20, '', 'admin', '2021-03-03 14:54:28.794968', '2021-03-03 14:54:28.795015', '2', NULL, '角色修改', 2, '1', NULL, NULL, '/admin/permission/role/{id}/', 'PUT', 'permission:role:{id}:put', '1', '1', '1', 1, 8, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (21, '', 'admin', '2021-03-03 14:58:00.798718', '2021-03-03 14:58:00.798813', '2', NULL, '删除角色', 3, '1', NULL, NULL, '/admin/permission/role/{id}/', 'DELETE', 'permission:role:{id}:delete', '1', '1', '1', 1, 8, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (22, '', 'admin', '2021-03-03 14:58:28.940577', '2021-03-03 14:58:28.940625', '2', NULL, '角色导出', 4, '1', NULL, NULL, '/admin/permission/role/export/', 'GET', 'permission:role:export:get', '1', '1', '1', 1, 8, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (23, '', 'admin', '2021-03-03 15:00:41.081771', '2021-03-03 15:00:41.081832', '2', NULL, '菜单新增', 1, '1', NULL, NULL, '/admin/permission/menus/', 'POST', 'permission:menus:post', '1', '1', '1', 1, 7, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (24, '', 'admin', '2021-03-03 15:01:03.178824', '2021-03-03 15:01:03.178874', '2', NULL, '菜单修改', 2, '1', NULL, NULL, '/admin/permission/menus/{id}/', 'PUT', 'permission:menus:{id}:put', '1', '1', '1', 1, 7, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (25, '', 'admin', '2021-03-03 15:02:56.123525', '2021-03-03 15:02:56.123571', '2', NULL, '菜单删除', 3, '1', NULL, NULL, '/admin/permission/menus/{id}/', 'DELETE', 'permission:menus:{id}:delete', '1', '1', '1', 1, 7, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (26, '', 'admin', '2021-03-03 15:04:35.191774', '2021-03-03 15:04:35.191856', '2', NULL, '部门新增', 1, '1', NULL, NULL, '/admin/permission/dept/', 'POST', 'permission:dept:post', '1', '1', '1', 1, 6, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (27, '', 'admin', '2021-03-03 15:04:56.963168', '2021-03-03 15:04:56.963214', '2', NULL, '部门修改', 2, '1', NULL, NULL, '/admin/permission/dept/{id}/', 'PUT', 'permission:dept:{id}:put', '1', '1', '1', 1, 6, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (28, '', 'admin', '2021-03-03 15:05:39.602577', '2021-03-03 15:05:39.602622', '2', NULL, '部门删除', 3, '1', NULL, NULL, '/admin/permission/dept/{id}/', 'DELETE', 'permission:dept:{id}:delete', '1', '1', '1', 1, 6, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (29, '', 'admin', '2021-03-03 15:06:50.095341', '2021-03-03 15:06:50.095388', '2', NULL, '岗位新增', 1, '1', NULL, NULL, '/admin/permission/post/', 'POST', 'permission:post:post', '1', '1', '1', 1, 5, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (30, '', 'admin', '2021-03-03 15:07:36.013313', '2021-03-03 15:07:36.013358', '2', NULL, '岗位修改', 2, '1', NULL, NULL, '/admin/permission/post/{id}/', 'PUT', 'permission:post:{id}:put', '1', '1', '1', 1, 5, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (31, '', 'admin', '2021-03-03 15:08:10.371530', '2021-03-03 15:08:10.371575', '2', NULL, '岗位删除', 3, '1', NULL, NULL, '/admin/permission/post/{id}/', 'DELETE', 'permission:post:{id}:delete', '1', '1', '1', 1, 5, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (32, '', 'admin', '2021-03-03 15:09:02.213084', '2021-03-03 15:09:02.213131', '2', NULL, '岗位导出', 4, '1', NULL, NULL, '/admin/permission/post/export/', 'GET', 'permission:post:export:get', '1', '1', '1', 1, 5, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (33, '', 'admin', '2021-03-03 15:11:37.616329', '2021-03-03 15:11:37.616415', '2', NULL, '字典新增', 1, '1', NULL, NULL, '/admin/system/dict/type/', 'POST', 'system:dict:type:post', '1', '1', '1', 1, 3, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (34, '', 'admin', '2021-03-03 15:12:47.237658', '2021-03-03 15:12:47.237713', '2', NULL, '字典修改', 2, '1', NULL, NULL, '/admin/system/dict/type/{id}/', 'PUT', 'system:dict:type:{id}:put', '1', '1', '1', 1, 3, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (35, '', 'admin', '2021-03-03 15:13:40.185174', '2021-03-03 15:13:40.185230', '2', NULL, '字典删除', 3, '1', NULL, NULL, '/admin/system/dict/type/{id}/', 'DELETE', 'system:dict:type:{id}:delete', '1', '1', '1', 1, 3, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (36, '', 'admin', '2021-03-03 15:15:12.950584', '2021-03-03 15:15:12.950684', '2', NULL, '字典导出', 4, '1', NULL, NULL, '/admin/system/dict/type/export/', 'GET', 'system:dict:type:export:get', '1', '1', '1', 1, 3, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (37, '', 'admin', '2021-03-03 15:16:54.709780', '2021-03-03 15:16:20.868146', '2', NULL, '清理缓存', 5, '1', NULL, NULL, '/admin/system/dict/type/clearCache/', 'DELETE', 'system:dict:type:clearcache:delete', '1', '1', '1', 1, 3, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (38, '', 'admin', '2021-03-03 15:17:54.232085', '2021-03-03 15:17:54.232166', '2', NULL, '参数新增', 1, '1', NULL, NULL, '/admin/system/config/', 'POST', 'system:config:post', '1', '1', '1', 1, 4, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (39, '', 'admin', '2021-03-03 15:18:37.088187', '2021-03-03 15:18:37.088237', '2', NULL, '参数修改', 2, '1', NULL, NULL, '/admin/system/config/{id}/', 'PUT', 'system:config:{id}:put', '1', '1', '1', 1, 4, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (40, '', 'admin', '2021-03-03 15:19:05.532556', '2021-03-03 15:19:05.532616', '2', NULL, '参数删除', 3, '1', NULL, NULL, '/admin/system/config/{id}/', 'DELETE', 'system:config:{id}:delete', '1', '1', '1', 1, 4, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (41, '', 'admin', '2021-03-03 15:19:49.576174', '2021-03-03 15:19:49.576221', '2', NULL, '参数导出', 4, '1', NULL, NULL, '/admin/system/config/export/', 'GET', 'system:config:export:get', '1', '1', '1', 1, 4, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (42, '', 'admin', '2021-03-03 15:21:20.098250', '2021-03-03 15:21:20.098345', '2', NULL, '清理缓存', 5, '1', NULL, NULL, '/admin/system/config/clearCache/', 'DELETE', 'system:config:clearcache:delete', '1', '1', '1', 1, 4, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (43, '', 'admin', '2021-03-03 15:22:48.492613', '2021-03-03 15:22:48.492666', '2', NULL, '文件上传', 1, '1', NULL, NULL, '/admin/system/savefile/', 'POST', 'system:savefile:post', '1', '1', '1', 1, 11, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (44, '', 'admin', '2021-03-03 15:23:58.219105', '2021-03-03 15:23:58.219155', '2', NULL, '文件删除', 2, '1', NULL, NULL, '/admin/system/savefile/{id}/', 'DELETE', 'system:savefile:{id}:delete', '1', '1', '1', 1, 11, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (45, '', 'admin', '2021-03-03 15:25:15.224971', '2021-03-03 15:25:15.225018', '2', NULL, '清理废弃文件', 3, '1', NULL, NULL, '/admin/system/clearsavefile/', 'POST', 'system:clearsavefile:post', '1', '1', '1', 1, 11, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (46, '', 'admin', '2021-03-03 15:28:30.061632', '2021-03-03 15:27:19.945663', '2', NULL, '文件下载', 4, '1', NULL, NULL, NULL, 'GET', 'system:clearsavefile:download:post', '1', '1', '1', 1, 11, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (47, '', 'admin', '2021-03-16 14:51:22.015400', '2021-03-07 14:32:06.754815', '1', 'message', '通知公告', 4, '1', 'system/message', 'vadmin/system/message/index', '', 'GET', '', '1', '1', '1', 1, 1, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (48, '', 'admin', '2021-03-07 14:35:06.718432', '2021-03-07 14:35:06.718463', '2', NULL, '发布公告', 1, '1', NULL, NULL, '/admin/system/message/', 'POST', 'system:message:post', '1', '1', '1', 1, 47, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (49, '', 'admin', '2021-03-08 13:04:32.158707', '2021-03-07 14:36:47.675837', '2', NULL, '修改公告', 2, '1', NULL, NULL, '/admin/system/message/{id}/', 'PUT', 'system:message:{id}:put', '1', '1', '1', 1, 47, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (50, '', 'admin', '2021-03-08 13:04:58.206693', '2021-03-07 14:37:52.130567', '2', NULL, '删除公告', 3, '1', NULL, NULL, '/admin/permission/menu/{id}/', 'DELETE', 'permission:menu:{id}:delete', '1', '1', '1', 1, 47, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (51, '', 'admin', '2021-03-07 14:42:37.410336', '2021-03-07 14:42:37.410366', '2', NULL, '公告导出', 4, '1', NULL, NULL, '/admin/system/message/export/', 'GET', 'system:message:export:get', '1', '1', '1', 1, 47, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (52, '', 'admin', '2021-03-09 17:19:13.828166', '2021-03-09 17:18:14.976783', '2', NULL, '字典查询', 0, '1', NULL, NULL, '/admin/system/dict/type/', 'GET', 'system:dict:type:get', '1', '1', '1', 1, 3, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (53, '', 'admin', '2021-03-09 17:19:46.963317', '2021-03-09 17:19:33.953559', '2', NULL, '参数查询', 0, '1', NULL, NULL, '/admin/system/config/', 'GET', 'system:config:get', '1', '1', '1', 1, 4, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (54, '', 'admin', '2021-03-09 17:20:14.749627', '2021-03-09 17:20:02.783389', '2', NULL, '文件查询', 0, '1', NULL, NULL, '/admin/system/savefile/', 'GET', 'system:savefile:get', '1', '1', '1', 1, 11, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (55, '', 'admin', '2021-03-09 17:20:44.604824', '2021-03-09 17:20:36.025364', '2', NULL, '公告查询', 0, '1', NULL, NULL, '/admin/system/message/', 'GET', 'system:message:get', '1', '1', '1', 1, 47, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (56, '', 'admin', '2021-03-09 17:21:06.429585', '2021-03-09 17:21:06.429629', '2', NULL, '岗位查询', 0, '1', NULL, NULL, '/admin/permission/post/', 'GET', 'permission:post:get', '1', '1', '1', 1, 5, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (57, '', 'admin', '2021-03-09 17:21:29.013165', '2021-03-09 17:21:29.013210', '2', NULL, '部门查询', 0, '1', NULL, NULL, '/admin/permission/dept/', 'GET', 'permission:dept:get', '1', '1', '1', 1, 6, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (58, '', 'admin', '2021-03-09 17:21:56.243957', '2021-03-09 17:21:47.358360', '2', NULL, '菜单查询', 0, '1', NULL, NULL, '/admin/permission/menus/', 'GET', 'permission:menus:get', '1', '1', '1', 1, 7, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (59, '', 'admin', '2021-03-09 17:22:20.140143', '2021-03-09 17:22:20.140189', '2', NULL, '角色查询', 0, '1', '', NULL, '/admin/permission/role/', 'GET', 'permission:role:get', '1', '1', '1', 1, 8, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (60, '', 'admin', '2021-03-09 17:22:38.595706', '2021-03-09 17:22:38.595751', '2', NULL, '用户查询', 0, '1', NULL, NULL, '/admin/permission/user/', 'GET', 'permission:user:get', '1', '1', '1', 1, 9, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (61, '', 'admin', '2021-03-21 11:34:17.635680', '2021-03-16 13:34:04.148728', '0', 'log', '日志管理', 5, '1', 'log', 'ParentView', NULL, 'GET', NULL, '1', '1', '1', 1, 1, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (62, '', 'admin', '2021-03-16 15:09:30.396752', '2021-03-16 13:36:00.114652', '1', 'logininfor', '登录日志', 1, '1', 'logininfor', 'vadmin/monitor/logininfor/index', '', 'GET', '', '1', '1', '1', 1, 61, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (63, '', 'admin', '2021-03-16 15:09:38.015636', '2021-03-16 14:28:10.395273', '1', 'log', '操作日志', 2, '1', 'operlog', 'vadmin/monitor/operlog/index', '', 'GET', '', '1', '1', '1', 1, 61, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (64, '', 'admin', '2021-03-16 14:31:27.618230', '2021-03-16 14:31:01.026470', '2', NULL, '登录日志查询', 1, '1', NULL, NULL, '/admin/system/logininfor/', 'GET', 'admin:system:logininfor:get', '1', '1', '1', 1, 62, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (65, '', 'admin', '2021-03-16 14:31:44.112525', '2021-03-16 14:31:44.112572', '2', NULL, '操作日志查询', 1, '1', NULL, NULL, '/admin/system/operlog/', 'GET', 'admin:system:operlog:get', '1', '1', '1', 1, 63, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (66, '', 'admin', '2021-03-16 14:33:05.482942', '2021-03-16 14:33:05.483003', '0', 'monitor', '系统监控', 3, '1', 'monitor', NULL, NULL, 'GET', NULL, '1', '1', '1', 1, NULL, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (67, '', 'admin', '2021-03-16 14:49:59.260322', '2021-03-16 14:34:59.165065', '1', 'online', '在线用户', 1, '1', 'online', 'vadmin/monitor/online/index', '', 'GET', '', '1', '1', '1', 1, 66, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (68, '', 'admin', '2021-03-16 14:36:00.989981', '2021-03-16 14:35:50.894454', '2', NULL, '在线用户查询', 1, '1', NULL, NULL, '/admin/monitor/online/', 'GET', 'admin:monitor:online:get', '1', '1', '1', 1, 67, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (69, '', 'admin', '2021-03-16 14:37:10.577186', '2021-03-16 14:37:10.577231', '2', NULL, '用户强退', 2, '1', NULL, NULL, '/admin/monitor/online/{id}/', 'PUT', 'admin:monitor:online:{id}:put', '1', '1', '1', 1, 67, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (70, '', 'admin', '2021-03-16 15:04:21.404578', '2021-03-16 14:45:51.507961', '1', 'job', '定时任务', 2, '1', 'celery', 'vadmin/monitor/celery/index', '', 'GET', NULL, '1', '1', '1', 1, 66, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (71, '', 'admin', '2021-03-16 15:04:11.799260', '2021-03-16 14:59:53.619219', '2', NULL, '任务查询', 1, '1', NULL, NULL, '/admin/monitor/celery/', 'GET', 'admin:monitor:celery:get', '1', '1', '1', 1, 70, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (72, '', 'admin', '2021-03-16 15:04:06.645135', '2021-03-16 15:00:21.809600', '2', NULL, '任务新增', 2, '1', NULL, NULL, '/admin/monitor/celery/', 'POST', 'admin:monitor:celery:post', '1', '1', '1', 1, 70, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (73, '', 'admin', '2021-03-16 15:04:00.041701', '2021-03-16 15:00:45.994228', '2', NULL, '任务修改', 3, '1', NULL, NULL, '/admin/monitor/celery/{id}/', 'PUT', 'admin:monitor:celery:{id}:put', '1', '1', '1', 1, 70, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (74, '', 'admin', '2021-03-16 15:03:54.891216', '2021-03-16 15:01:19.624182', '2', NULL, '任务删除', 4, '1', NULL, NULL, '/admin/monitor/celery/{id}/', 'DELETE', 'admin:monitor:celery:{id}:delete', '1', '1', '1', 1, 70, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (75, '', 'admin', '2021-03-16 15:07:03.505007', '2021-03-16 15:03:35.796596', '2', NULL, '任务单次执行', 6, '1', NULL, NULL, '/admin/monitor/celery/run/', 'PUT', 'admin:monitor:celery:run:put', '1', '1', '1', 1, 70, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (76, '', 'admin', '2021-03-16 15:08:09.768588', '2021-03-16 15:07:45.064547', '2', NULL, '任务导出', 5, '1', NULL, NULL, '/admin/monitor/celery/export/', 'GET', 'admin:monitor:celery:export:get', '1', '1', '1', 1, 70, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (77, '', 'admin', '2021-03-16 15:09:09.928480', '2021-03-16 15:08:46.299829', '2', NULL, '登录日志导出', 2, '1', NULL, NULL, '/admin/system/logininfor/export/', 'GET', 'admin:system:logininfor:export:get', '1', '1', '1', 1, 62, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (78, '', 'admin', '2021-03-16 15:09:59.500271', '2021-03-16 15:09:59.500333', '2', NULL, '操作日志导出', 2, '1', NULL, NULL, '/admin/system/operlog/export/', 'GET', 'admin:system:operlog:export:get', '1', '1', '1', 1, 63, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (79, '', 'admin', '2021-03-16 15:13:41.377208', '2021-03-16 15:11:05.675729', '1', 'job', '定时日志', 3, '1', 'celerylog', 'vadmin/monitor/celerylog/index', NULL, 'GET', NULL, '1', '1', '1', 1, 61, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (80, '', 'admin', '2021-03-16 15:16:29.349992', '2021-03-16 15:12:19.707979', '2', NULL, '定时日志查询', 1, '1', NULL, NULL, '/admin/monitor/celerylog/', 'GET', 'admin:monitor:celerylog:get', '1', '1', '1', 1, 79, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (81, '', 'admin', '2021-03-16 15:16:34.419420', '2021-03-16 15:12:51.090410', '2', NULL, '定时日志导出', 2, '1', NULL, NULL, '/admin/monitor/celerylog/export/', 'GET', 'admin:monitor:celerylog:export:get', '1', '1', '1', 1, 79, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (82, '', 'admin', '2021-03-16 15:15:21.397132', '2021-03-16 15:15:21.397186', '0', 'tool', '系统工具', 4, '1', 'tool', NULL, NULL, 'GET', NULL, '1', '1', '1', 1, NULL, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (83, '', 'admin', '2021-03-16 15:16:10.318380', '2021-03-16 15:16:10.318426', '1', 'build', '表单构建', 1, '1', 'build', 'vadmin/tool/build/index', NULL, 'GET', NULL, '1', '1', '1', 1, 82, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (84, '', 'admin', '2021-03-16 15:19:24.228395', '2021-03-16 15:17:23.507732', '1', 'swagger', '系统接口', 2, '1', 'swagger', 'vadmin/tool/swagger/index', '/admin/docs/', 'GET', 'admin:docs:get', '1', '1', '1', 1, 82, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (85, '', 'admin', '2021-03-21 11:37:06.119591', '2021-03-21 11:37:06.119623', '2', NULL, '操作日志批量删除', 3, '1', NULL, NULL, '/admin/system/operation_log/{id}/', 'DELETE', 'admin:system:operation_log:{id}:delete', '1', '1', '1', 1, 63, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (86, '', 'admin', '2021-03-21 11:39:07.579469', '2021-03-21 11:39:07.579517', '2', NULL, '操作日志清空', 4, '1', NULL, NULL, '/admin/system/operation_log/clean/', 'DELETE', 'admin:system:operation_log:clean:delete', '1', '1', '1', 1, 63, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (87, '', 'admin', '2021-03-21 23:32:44.308857', '2021-03-21 23:32:44.308882', '2', NULL, '登录日志批量删除', 3, '1', NULL, NULL, '/admin/system/logininfor/{id}/', 'DELETE', 'admin:system:logininfor:{id}:delete', '1', '1', '1', 1, 62, 1);
|
||||
INSERT INTO `permission_menu` (id, description, modifier, update_datetime, create_datetime, menuType, icon, name, orderNum, isFrame, web_path, component_path, interface_path, interface_method, perms, status, visible, isCache, creator_id, parentId_id, dept_belong_id) VALUES (88, '', 'admin', '2021-03-21 23:33:30.888568', '2021-03-21 23:33:30.888593', '2', NULL, '登录日志清空', 4, '1', NULL, NULL, '/admin/system/logininfor/clean/', 'DELETE', 'admin:system:logininfor:clean:delete', '1', '1', '1', 1, 62, 1);
|
|
@ -0,0 +1,27 @@
|
|||
-- ----------------------------
|
||||
-- 岗位管理初始化sql
|
||||
-- Table structure for permission_post
|
||||
-- ----------------------------
|
||||
-- DROP TABLE IF EXISTS `permission_post`;
|
||||
-- CREATE TABLE `permission_post` (
|
||||
-- `id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
-- `description` longtext,
|
||||
-- `creator` varchar(255) DEFAULT NULL,
|
||||
-- `modifier` varchar(255) DEFAULT NULL,
|
||||
-- `update_datetime` datetime(6) DEFAULT NULL,
|
||||
-- `create_datetime` datetime(6) DEFAULT NULL,
|
||||
-- `postName` varchar(64) NOT NULL,
|
||||
-- `postCode` varchar(32) NOT NULL,
|
||||
-- `postSort` int(11) NOT NULL,
|
||||
-- `status` varchar(8) NOT NULL,
|
||||
-- `remark` longtext,
|
||||
-- PRIMARY KEY (`id`)
|
||||
-- ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of permission_post
|
||||
-- ----------------------------
|
||||
INSERT INTO `permission_post` (id, description, modifier, update_datetime, create_datetime, postName, postCode, postSort, status, remark, creator_id, dept_belong_id) VALUES (1, '', 'admin', '2021-02-27 07:16:10.725970', '2021-02-27 07:16:10.726016', '董事长', 'ceo', 1, '1', NULL, 1, 1);
|
||||
INSERT INTO `permission_post` (id, description, modifier, update_datetime, create_datetime, postName, postCode, postSort, status, remark, creator_id, dept_belong_id) VALUES (2, '', 'admin', '2021-02-27 07:16:28.139648', '2021-02-27 07:16:28.139689', '项目经理', 'ce', 2, '1', NULL, 1, 1);
|
||||
INSERT INTO `permission_post` (id, description, modifier, update_datetime, create_datetime, postName, postCode, postSort, status, remark, creator_id, dept_belong_id) VALUES (3, '', 'admin', '2021-02-27 07:16:39.843069', '2021-02-27 07:16:39.843114', '人力资源', 'hr', 3, '1', NULL, 1, 1);
|
||||
INSERT INTO `permission_post` (id, description, modifier, update_datetime, create_datetime, postName, postCode, postSort, status, remark, creator_id, dept_belong_id) VALUES (4, '', 'admin', '2021-02-27 07:16:51.082769', '2021-02-27 07:16:51.082813', '普通员工', 'user', 4, '1', NULL, 1, 1);
|
|
@ -0,0 +1,173 @@
|
|||
-- ----------------------------
|
||||
-- 角色管理 初始化
|
||||
-- Table structure for permission_role
|
||||
-- ----------------------------
|
||||
-- DROP TABLE IF EXISTS `permission_role`;
|
||||
-- CREATE TABLE `permission_role` (
|
||||
-- `id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
-- `description` longtext,
|
||||
-- `creator` varchar(255) DEFAULT NULL,
|
||||
-- `modifier` varchar(255) DEFAULT NULL,
|
||||
-- `update_datetime` datetime(6) DEFAULT NULL,
|
||||
-- `create_datetime` datetime(6) DEFAULT NULL,
|
||||
-- `roleName` varchar(64) NOT NULL,
|
||||
-- `roleKey` varchar(64) NOT NULL,
|
||||
-- `roleSort` int(11) NOT NULL,
|
||||
-- `status` varchar(8) NOT NULL,
|
||||
-- `admin` tinyint(1) NOT NULL,
|
||||
-- `dataScope` varchar(8) NOT NULL,
|
||||
-- `remark` longtext,
|
||||
-- PRIMARY KEY (`id`)
|
||||
-- ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of permission_role
|
||||
-- ----------------------------
|
||||
INSERT INTO `permission_role` (id, description, modifier, update_datetime, create_datetime, roleName, roleKey, roleSort, status, admin, dataScope, remark, creator_id, dept_belong_id) VALUES (1, '', 'admin', '2021-02-27 08:48:23.225361', '2021-02-27 08:48:08.064911', '超级管理员', 'admin', 1, '1', 1, '2', NULL, 1, 1);
|
||||
INSERT INTO `permission_role` (id, description, modifier, update_datetime, create_datetime, roleName, roleKey, roleSort, status, admin, dataScope, remark, creator_id, dept_belong_id) VALUES (2, '', 'admin', '2021-02-27 08:49:05.149632', '2021-02-27 08:48:47.317214', '普通角色', 'common', 2, '1', 0, '2', NULL, 1, 1);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for permission_role_dept
|
||||
-- ----------------------------
|
||||
-- DROP TABLE IF EXISTS `permission_role_dept`;
|
||||
-- CREATE TABLE `permission_role_dept` (
|
||||
-- `id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
-- `role_id` int(11) NOT NULL,
|
||||
-- `dept_id` int(11) NOT NULL,
|
||||
-- PRIMARY KEY (`id`),
|
||||
-- UNIQUE KEY `permission_role_dept_role_id_dept_id_1d89afeb_uniq` (`role_id`,`dept_id`),
|
||||
-- KEY `permission_role_dept_role_id_99a9f232` (`role_id`) USING BTREE,
|
||||
-- KEY `permission_role_dept_dept_id_cbe9076a` (`dept_id`) USING BTREE
|
||||
-- ) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of permission_role_dept
|
||||
-- ----------------------------
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (1, 1, 1);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (2, 1, 2);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (3, 1, 3);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (4, 1, 4);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (5, 1, 5);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (6, 1, 6);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (7, 1, 7);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (8, 1, 8);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (9, 1, 9);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (10, 1, 10);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (11, 1, 11);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (12, 1, 12);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (13, 1, 13);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (14, 1, 14);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (15, 1, 15);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (16, 1, 16);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (17, 2, 1);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (18, 2, 2);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (19, 2, 3);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (20, 2, 4);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (21, 2, 5);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (22, 2, 6);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (23, 2, 7);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (24, 2, 8);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (25, 2, 9);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (26, 2, 10);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (27, 2, 11);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (28, 2, 12);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (29, 2, 13);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (30, 2, 14);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (31, 2, 15);
|
||||
INSERT INTO `permission_role_dept` (id, role_id, dept_id) VALUES (32, 2, 16);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for permission_role_menu
|
||||
-- ----------------------------
|
||||
-- DROP TABLE IF EXISTS `permission_role_menu`;
|
||||
-- CREATE TABLE `permission_role_menu` (
|
||||
-- `id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
-- `role_id` int(11) NOT NULL,
|
||||
-- `menu_id` int(11) NOT NULL,
|
||||
-- PRIMARY KEY (`id`),
|
||||
-- UNIQUE KEY `permission_role_menu_role_id_menu_id_bb9e5441_uniq` (`role_id`,`menu_id`),
|
||||
-- KEY `permission_role_menu_role_id_33541d2b` (`role_id`) USING BTREE,
|
||||
-- KEY `permission_role_menu_menu_id_0c24555f` (`menu_id`) USING BTREE
|
||||
-- ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of permission_role_menu
|
||||
-- ----------------------------
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (1, 1, 1);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (2, 1, 2);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (3, 1, 3);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (4, 1, 4);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (5, 1, 5);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (6, 1, 6);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (7, 1, 7);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (8, 1, 8);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (9, 1, 9);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (10, 1, 10);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (21, 1, 11);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (22, 1, 13);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (23, 1, 14);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (24, 1, 15);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (25, 1, 16);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (26, 1, 17);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (27, 1, 18);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (28, 1, 19);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (29, 1, 20);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (30, 1, 21);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (31, 1, 22);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (32, 1, 23);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (33, 1, 24);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (34, 1, 25);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (35, 1, 26);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (36, 1, 27);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (37, 1, 28);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (38, 1, 29);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (39, 1, 30);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (40, 1, 31);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (41, 1, 32);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (42, 1, 33);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (43, 1, 34);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (44, 1, 35);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (45, 1, 36);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (46, 1, 37);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (47, 1, 38);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (48, 1, 39);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (49, 1, 40);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (50, 1, 41);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (51, 1, 42);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (52, 1, 43);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (53, 1, 44);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (54, 1, 45);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (55, 1, 46);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (56, 1, 47);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (57, 1, 48);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (58, 1, 49);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (59, 1, 50);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (60, 1, 51);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (61, 1, 52);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (62, 1, 53);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (63, 1, 54);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (64, 1, 55);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (65, 1, 56);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (66, 1, 57);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (67, 1, 58);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (68, 1, 59);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (69, 1, 60);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (74, 1, 61);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (75, 1, 62);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (76, 1, 63);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (70, 1, 64);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (71, 1, 65);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (72, 1, 77);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (73, 1, 78);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (77, 1, 85);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (78, 1, 86);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (11, 2, 1);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (12, 2, 2);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (13, 2, 3);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (14, 2, 4);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (15, 2, 5);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (16, 2, 6);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (17, 2, 7);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (18, 2, 8);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (19, 2, 9);
|
||||
INSERT INTO `permission_role_menu` (id, role_id, menu_id) VALUES (20, 2, 10);
|
|
@ -33,8 +33,8 @@
|
|||
-- ----------------------------
|
||||
-- Records of permission_userprofile
|
||||
-- ----------------------------
|
||||
INSERT INTO `permission_userprofile` VALUES (1, 'pbkdf2_sha256$150000$OjTMSXJgkzrE$jEQCjWbIbXwpN4k2z0o8Yvou1UQGuoJALyL/kGDZFd4=', '2021-02-27 06:20:28.214775', 1, '', '', 1, 1, '2021-02-27 06:20:09.188689', 'admin', '3704adf3-380f-4c27-a8da-60420e8cb4ab', 'admin@qq.com', NULL, NULL, '管理员', '2', '1', 2, '2021-02-27 06:20:09.263192', '2021-02-27 09:14:30.009998', 8);
|
||||
INSERT INTO `permission_userprofile` VALUES (2, 'pbkdf2_sha256$150000$5Z9LSi7LpNms$xVguE/dOEpI4D95LjSaKm0xzG7vNSopUolANr8f/6/E=', NULL, 0, '', '', 0, 1, '2021-03-03 15:38:27.009893', 'dvadmin', 'b4c5d79a-f01c-4244-92f8-b5288eca1d50', NULL, NULL, NULL, '普通用户', '2', NULL, 0, '2021-03-03 15:38:27.010771', '2021-03-03 15:38:27.086069', 8);
|
||||
INSERT INTO `permission_userprofile` (id, password, last_login, is_superuser, first_name, last_name, is_staff, is_active, date_joined, username, secret, email, mobile, avatar, name, gender, remark, user_type, create_datetime, update_datetime, dept_id, dept_belong_id) VALUES (1, 'pbkdf2_sha256$150000$OjTMSXJgkzrE$jEQCjWbIbXwpN4k2z0o8Yvou1UQGuoJALyL/kGDZFd4=', '2021-02-27 06:20:28.214775', 1, '', '', 1, 1, '2021-02-27 06:20:09.188689', 'admin', '3704adf3-380f-4c27-a8da-60420e8cb4ab', 'admin@qq.com', NULL, NULL, '管理员', '2', '1', 2, '2021-02-27 06:20:09.263192', '2021-02-27 09:14:30.009998', 8, 1);
|
||||
INSERT INTO `permission_userprofile` (id, password, last_login, is_superuser, first_name, last_name, is_staff, is_active, date_joined, username, secret, email, mobile, avatar, name, gender, remark, user_type, create_datetime, update_datetime, dept_id, dept_belong_id) VALUES (2, 'pbkdf2_sha256$150000$5Z9LSi7LpNms$xVguE/dOEpI4D95LjSaKm0xzG7vNSopUolANr8f/6/E=', NULL, 0, '', '', 0, 1, '2021-03-03 15:38:27.009893', 'dvadmin', 'b4c5d79a-f01c-4244-92f8-b5288eca1d50', NULL, NULL, NULL, '普通用户', '2', NULL, 0, '2021-03-03 15:38:27.010771', '2021-03-03 15:38:27.086069', 8, 1);
|
||||
-- ----------------------------
|
||||
-- Table structure for permission_userprofile_post
|
||||
-- ----------------------------
|
||||
|
@ -52,8 +52,8 @@ INSERT INTO `permission_userprofile` VALUES (2, 'pbkdf2_sha256$150000$5Z9LSi7LpN
|
|||
-- ----------------------------
|
||||
-- Records of permission_userprofile_post
|
||||
-- ----------------------------
|
||||
INSERT INTO `permission_userprofile_post` VALUES (1, 1, 1);
|
||||
INSERT INTO `permission_userprofile_post` VALUES (2, 2, 4);
|
||||
INSERT INTO `permission_userprofile_post` (id, userprofile_id, post_id) VALUES (1, 1, 1);
|
||||
INSERT INTO `permission_userprofile_post` (id, userprofile_id, post_id) VALUES (2, 2, 4);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for permission_userprofile_role
|
||||
|
@ -72,5 +72,5 @@ INSERT INTO `permission_userprofile_post` VALUES (2, 2, 4);
|
|||
-- ----------------------------
|
||||
-- Records of permission_userprofile_role
|
||||
-- ----------------------------
|
||||
INSERT INTO `permission_userprofile_role` VALUES (1, 1, 1);
|
||||
INSERT INTO `permission_userprofile_role` VALUES (2, 2, 2);
|
||||
INSERT INTO `permission_userprofile_role` (id, userprofile_id, role_id) VALUES (1, 1, 1);
|
||||
INSERT INTO `permission_userprofile_role` (id, userprofile_id, role_id) VALUES (2, 2, 2);
|
|
@ -0,0 +1,27 @@
|
|||
-- ----------------------------
|
||||
-- 参数设置 初始化sql
|
||||
-- Table structure for system_configsettings
|
||||
-- ----------------------------
|
||||
-- DROP TABLE IF EXISTS `system_configsettings`;
|
||||
-- CREATE TABLE `system_configsettings` (
|
||||
-- `id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
-- `description` longtext,
|
||||
-- `creator` varchar(255) DEFAULT NULL,
|
||||
-- `modifier` varchar(255) DEFAULT NULL,
|
||||
-- `update_datetime` datetime(6) DEFAULT NULL,
|
||||
-- `create_datetime` datetime(6) DEFAULT NULL,
|
||||
-- `configName` varchar(64) NOT NULL,
|
||||
-- `configKey` varchar(256) NOT NULL,
|
||||
-- `configValue` varchar(256) NOT NULL,
|
||||
-- `configType` varchar(8) NOT NULL,
|
||||
-- `status` varchar(8) NOT NULL,
|
||||
-- `remark` varchar(256) DEFAULT NULL,
|
||||
-- PRIMARY KEY (`id`)
|
||||
-- ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of system_configsettings
|
||||
-- ----------------------------
|
||||
INSERT INTO `system_configsettings` (id, description, modifier, update_datetime, create_datetime, configName, configKey, configValue, configType, status, remark, creator_id, dept_belong_id) VALUES (1, '', 'admin', '2021-02-27 07:14:48.935587', '2021-02-27 07:14:48.935634', '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', '1', '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow', 1, 1);
|
||||
INSERT INTO `system_configsettings` (id, description, modifier, update_datetime, create_datetime, configName, configKey, configValue, configType, status, remark, creator_id, dept_belong_id) VALUES (2, '', 'admin', '2021-02-27 07:15:14.039924', '2021-02-27 07:15:14.039967', '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', '1', '初始化密码 123456', 1, 1);
|
||||
INSERT INTO `system_configsettings` (id, description, modifier, update_datetime, create_datetime, configName, configKey, configValue, configType, status, remark, creator_id, dept_belong_id) VALUES (3, '', 'admin', '2021-02-27 07:15:36.091655', '2021-02-27 07:15:36.091694', '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-dark', 'Y', '1', '深色主题theme-dark,浅色主题theme-light', 1, 1);
|
|
@ -0,0 +1,35 @@
|
|||
-- ----------------------------
|
||||
-- 字典管理初始化sql
|
||||
-- Table structure for system_dictdata
|
||||
-- ----------------------------
|
||||
-- DROP TABLE IF EXISTS `system_dictdata`;
|
||||
-- CREATE TABLE `system_dictdata` (
|
||||
-- `id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
-- `description` longtext,
|
||||
-- `creator` varchar(255) DEFAULT NULL,
|
||||
-- `modifier` varchar(255) DEFAULT NULL,
|
||||
-- `update_datetime` datetime(6) DEFAULT NULL,
|
||||
-- `create_datetime` datetime(6) DEFAULT NULL,
|
||||
-- `dictName` varchar(64) NOT NULL,
|
||||
-- `dictType` varchar(64) NOT NULL,
|
||||
-- `status` varchar(8) NOT NULL,
|
||||
-- `remark` varchar(256) DEFAULT NULL,
|
||||
-- PRIMARY KEY (`id`)
|
||||
-- ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
-- ----------------------------
|
||||
-- Records of system_dictdata
|
||||
-- ----------------------------
|
||||
INSERT INTO `system_dictdata` (id, description, modifier, update_datetime, create_datetime, dictName, dictType, status, remark, creator_id, dept_belong_id) VALUES (1, '', 'admin', '2021-02-27 06:22:24.215575', '2021-02-27 06:22:24.215617', '用户性别', 'sys_user_sex', '1', '用户性别列表', 1, 1);
|
||||
INSERT INTO `system_dictdata` (id, description, modifier, update_datetime, create_datetime, dictName, dictType, status, remark, creator_id, dept_belong_id) VALUES (2, '', 'admin', '2021-02-27 06:24:38.126411', '2021-02-27 06:24:38.126456', '菜单状态', 'sys_show_hide', '1', '菜单状态列表', 1, 1);
|
||||
INSERT INTO `system_dictdata` (id, description, modifier, update_datetime, create_datetime, dictName, dictType, status, remark, creator_id, dept_belong_id) VALUES (3, '', 'admin', '2021-02-27 06:24:54.943462', '2021-02-27 06:24:54.943516', '系统开关', 'sys_normal_disable', '1', '系统开关列表', 1, 1);
|
||||
INSERT INTO `system_dictdata` (id, description, modifier, update_datetime, create_datetime, dictName, dictType, status, remark, creator_id, dept_belong_id) VALUES (4, '', 'admin', '2021-02-27 06:25:16.667651', '2021-02-27 06:25:16.667697', '任务状态', 'sys_job_status', '1', '任务状态列表', 1, 1);
|
||||
INSERT INTO `system_dictdata` (id, description, modifier, update_datetime, create_datetime, dictName, dictType, status, remark, creator_id, dept_belong_id) VALUES (5, '', 'admin', '2021-02-27 06:25:34.967768', '2021-02-27 06:25:34.967812', '任务分组', 'sys_job_group', '1', '任务分组列表', 1, 1);
|
||||
INSERT INTO `system_dictdata` (id, description, modifier, update_datetime, create_datetime, dictName, dictType, status, remark, creator_id, dept_belong_id) VALUES (6, '', 'admin', '2021-02-27 06:26:01.081973', '2021-02-27 06:26:01.082016', '系统是否', 'sys_yes_no', '1', '系统是否列表', 1, 1);
|
||||
INSERT INTO `system_dictdata` (id, description, modifier, update_datetime, create_datetime, dictName, dictType, status, remark, creator_id, dept_belong_id) VALUES (7, '', 'admin', '2021-02-27 06:26:17.716100', '2021-02-27 06:26:17.716144', '通知类型', 'sys_notice_type', '1', '通知类型列表', 1, 1);
|
||||
INSERT INTO `system_dictdata` (id, description, modifier, update_datetime, create_datetime, dictName, dictType, status, remark, creator_id, dept_belong_id) VALUES (8, '', 'admin', '2021-02-27 06:26:42.305470', '2021-02-27 06:26:42.305517', '通知状态', 'sys_notice_status', '1', '通知状态列表', 1, 1);
|
||||
INSERT INTO `system_dictdata` (id, description, modifier, update_datetime, create_datetime, dictName, dictType, status, remark, creator_id, dept_belong_id) VALUES (9, '', 'admin', '2021-02-27 06:26:57.913406', '2021-02-27 06:26:57.913457', '操作类型', 'sys_oper_type', '1', '操作类型列表', 1, 1);
|
||||
INSERT INTO `system_dictdata` (id, description, modifier, update_datetime, create_datetime, dictName, dictType, status, remark, creator_id, dept_belong_id) VALUES (10, '', 'admin', '2021-02-27 06:27:16.392863', '2021-02-27 06:27:16.392961', '系统状态', 'sys_common_status', '1', '登录状态列表', 1, 1);
|
||||
INSERT INTO `system_dictdata` (id, description, modifier, update_datetime, create_datetime, dictName, dictType, status, remark, creator_id, dept_belong_id) VALUES (11, '', 'admin', '2021-02-27 07:59:30.310069', '2021-02-27 07:59:30.310115', '菜单类型', 'sys_menu_type', '1', '菜单类型', 1, 1);
|
||||
INSERT INTO `system_dictdata` (id, description, modifier, update_datetime, create_datetime, dictName, dictType, status, remark, creator_id, dept_belong_id) VALUES (12, '', 'admin', '2021-02-27 07:59:47.677379', '2021-02-27 07:59:47.677423', '接口请求方式', 'sys_interface_method', '1', '接口请求方式', 1, 1);
|
||||
INSERT INTO `system_dictdata` (id, description, modifier, update_datetime, create_datetime, dictName, dictType, status, remark, creator_id, dept_belong_id) VALUES (13, '', 'admin', '2021-03-07 15:06:34.123188', '2021-03-07 14:27:51.286902', '消息类型', 'sys_message_push_type', '1', '消息通知类型', 1, 1);
|
||||
INSERT INTO `system_dictdata` (id, description, modifier, update_datetime, create_datetime, dictName, dictType, status, remark, creator_id, dept_belong_id) VALUES (14, '', 'admin', '2021-03-07 15:06:38.891604', '2021-03-07 15:06:00.930057', '消息状态', 'sys_message_push_status', '1', '消息通知状态', 1, 1);
|
|
@ -0,0 +1,70 @@
|
|||
-- ----------------------------
|
||||
-- 字典详情初始化sql
|
||||
-- Table structure for system_dictdetails
|
||||
-- ----------------------------
|
||||
-- DROP TABLE IF EXISTS `system_dictdetails`;
|
||||
-- CREATE TABLE `system_dictdetails` (
|
||||
-- `id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
-- `description` longtext,
|
||||
-- `creator` varchar(255) DEFAULT NULL,
|
||||
-- `modifier` varchar(255) DEFAULT NULL,
|
||||
-- `update_datetime` datetime(6) DEFAULT NULL,
|
||||
-- `create_datetime` datetime(6) DEFAULT NULL,
|
||||
-- `dictLabel` varchar(64) NOT NULL,
|
||||
-- `dictValue` varchar(256) NOT NULL,
|
||||
-- `is_default` tinyint(1) NOT NULL,
|
||||
-- `status` varchar(2) NOT NULL,
|
||||
-- `sort` varchar(256) NOT NULL,
|
||||
-- `remark` varchar(256) DEFAULT NULL,
|
||||
-- `dict_data_id` int(11) NOT NULL,
|
||||
-- PRIMARY KEY (`id`),
|
||||
-- KEY `system_dictdetails_dict_data_id_0bfceb37_fk_system_dictdata_id` (`dict_data_id`),
|
||||
-- CONSTRAINT `system_dictdetails_dict_data_id_0bfceb37_fk_system_dictdata_id` FOREIGN KEY (`dict_data_id`) REFERENCES `system_dictdata` (`id`)
|
||||
-- ) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of system_dictdetails
|
||||
-- ----------------------------
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (1, '', 'admin', '2021-02-27 07:10:41.679229', '2021-02-27 06:28:44.246112', '男', '0', 0, '1', '1', '性别男', 1, 1, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (2, '', 'admin', '2021-02-27 06:29:33.556002', '2021-02-27 06:29:03.591400', '女', '1', 0, '1', '2', '性别女', 1, 1, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (3, '', 'admin', '2021-02-27 06:29:51.943789', '2021-02-27 06:29:17.544082', '未知', '2', 1, '1', '3', '性别未知', 1, 1, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (4, '', 'admin', '2021-02-27 07:10:27.513951', '2021-02-27 06:31:38.884136', '显示', '1', 1, '1', '1', '显示菜单', 1, 2, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (5, '', 'admin', '2021-02-27 07:10:30.824117', '2021-02-27 06:33:07.491136', '隐藏', '0', 0, '1', '2', '隐藏菜单', 1, 2, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (6, '', 'admin', '2021-02-27 07:00:47.233161', '2021-02-27 07:00:47.233220', '正常', '1', 1, '1', '1', '正常状态', 1, 3, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (7, '', 'admin', '2021-02-27 07:01:02.598169', '2021-02-27 07:01:02.598213', '停用', '0', 0, '1', '2', '停用状态', 1, 3, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (8, '', 'admin', '2021-02-27 07:02:03.014319', '2021-02-27 07:01:43.750881', '正常', '1', 1, '1', '1', '正常状态', 1, 4, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (9, '', 'admin', '2021-02-27 07:01:58.880996', '2021-02-27 07:01:58.881040', '暂停', '0', 0, '1', '2', '停用状态', 1, 4, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (10, '', 'admin', '2021-02-27 07:02:51.415658', '2021-02-27 07:02:51.415703', '默认', 'DEFAULT', 1, '1', '1', '默认分组', 1, 5, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (11, '', 'admin', '2021-02-27 07:03:13.560650', '2021-02-27 07:03:13.560696', '系统', 'SYSTEM', 0, '1', '2', '系统分组', 1, 5, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (12, '', 'admin', '2021-02-27 07:03:42.729915', '2021-02-27 07:03:42.729966', '是', 'Y', 1, '1', '1', '系统默认是', 1, 6, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (13, '', 'admin', '2021-02-27 07:04:01.389829', '2021-02-27 07:04:01.389872', '否', 'N', 0, '1', '2', '系统默认否', 1, 6, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (14, '', 'admin', '2021-02-27 07:04:25.094873', '2021-02-27 07:04:25.094917', '通知', '1', 1, '1', '1', '通知', 1, 7, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (15, '', 'admin', '2021-02-27 07:04:48.136899', '2021-02-27 07:04:48.136942', '公告', '2', 0, '1', '2', '公告', 1, 7, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (16, '', 'admin', '2021-02-27 07:05:19.801756', '2021-02-27 07:05:14.206563', '正常', '1', 1, '1', '1', '正常状态', 1, 8, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (17, '', 'admin', '2021-02-27 07:05:37.420621', '2021-02-27 07:05:37.420665', '关闭', '0', 0, '1', '2', '关闭状态', 1, 8, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (18, '', 'admin', '2021-02-27 07:06:46.397742', '2021-02-27 07:06:10.700351', '新增', '1', 0, '1', '1', '新增操作', 1, 9, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (19, '', 'admin', '2021-02-27 07:06:24.688730', '2021-02-27 07:06:24.688786', '修改', '2', 0, '1', '2', '修改操作', 1, 9, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (20, '', 'admin', '2021-02-27 07:06:43.320943', '2021-02-27 07:06:43.320988', '删除', '3', 0, '1', '3', '删除操作', 1, 9, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (21, '', 'admin', '2021-02-27 07:07:00.508951', '2021-02-27 07:07:00.508996', '授权', '4', 0, '1', '4', '授权操作', 1, 9, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (22, '', 'admin', '2021-02-27 07:07:38.550527', '2021-02-27 07:07:38.550573', '导出', '5', 0, '1', '5', '导出操作', 1, 9, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (23, '', 'admin', '2021-02-27 07:08:09.294696', '2021-02-27 07:08:09.294743', '导入', '6', 0, '1', '6', '导入操作', 1, 9, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (24, '', 'admin', '2021-02-27 07:08:32.640718', '2021-02-27 07:08:32.640763', '强退', '7', 0, '1', '7', '强退操作', 1, 9, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (25, '', 'admin', '2021-02-27 07:08:47.559833', '2021-02-27 07:08:47.559887', '生成', '8', 0, '1', '8', '生成操作', 1, 9, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (26, '', 'admin', '2021-02-27 07:09:13.410371', '2021-02-27 07:09:04.346547', '清空', '9', 0, '1', '9', '清空操作', 1, 9, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (27, '', 'admin', '2021-02-27 07:09:37.467839', '2021-02-27 07:09:37.467883', '正常', '1', 0, '1', '1', '正常状态', 1, 10, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (28, '', 'admin', '2021-02-27 07:10:17.235559', '2021-02-27 07:10:02.980623', '停用', '0', 0, '1', '2', '停用状态', 1, 10, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (29, '', 'admin', '2021-02-27 08:00:07.361327', '2021-02-27 08:00:07.361371', '目录', '0', 1, '1', '1', '目录', 1, 11, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (30, '', 'admin', '2021-02-27 08:00:27.832697', '2021-02-27 08:00:22.160349', '菜单', '1', 0, '1', '2', '菜单', 1, 11, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (31, '', 'admin', '2021-02-27 08:00:45.794325', '2021-02-27 08:00:45.794369', '按钮', '2', 0, '1', '3', '按钮', 1, 11, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (32, '', 'admin', '2021-02-27 08:02:22.957299', '2021-02-27 08:02:22.957364', 'GET', 'GET', 1, '1', '1', NULL, 1, 12, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (33, '', 'admin', '2021-02-27 08:02:37.650203', '2021-02-27 08:02:37.650291', 'POST', 'POST', 0, '1', '2', NULL, 1, 12, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (34, '', 'admin', '2021-02-27 08:02:56.731151', '2021-02-27 08:02:56.731262', 'PUT', 'PUT', 0, '1', '3', NULL, 1, 12, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (35, '', 'admin', '2021-02-27 08:03:19.639542', '2021-02-27 08:03:19.639611', 'PATCH', 'PATCH', 0, '1', '4', NULL, 1, 12, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (36, '', 'admin', '2021-02-27 08:03:31.746528', '2021-02-27 08:03:31.746574', 'DELETE', 'DELETE', 0, '1', '5', NULL, 1, 12, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (37, '', 'admin', '2021-02-27 08:03:41.277335', '2021-02-27 08:03:41.277383', 'HEAD', 'HEAD', 0, '0', '6', NULL, 1, 12, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (38, '', 'admin', '2021-02-27 08:03:50.891906', '2021-02-27 08:03:50.891950', 'OPTIONS', 'OPTIONS', 0, '0', '7', NULL, 1, 12, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (39, '', 'admin', '2021-02-27 08:04:00.460564', '2021-02-27 08:04:00.460610', 'TRACE', 'TRACE', 0, '0', '8', NULL, 1, 12, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (40, '', 'admin', '2021-03-07 14:29:10.529482', '2021-03-07 14:29:10.529513', '消息通知', '1', 1, '1', '1', '消息通知', 1, 13, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (41, '', 'admin', '2021-03-07 14:29:40.480856', '2021-03-07 14:29:26.851952', '文件下发', '2', 0, '1', '2', '文件下发', 1, 13, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (42, '', 'admin', '2021-03-07 15:07:23.204077', '2021-03-07 15:07:23.204107', '待发送', '1', 1, '1', '1', '消息发送状态:待发送', 1, 14, 1);
|
||||
INSERT INTO `system_dictdetails` (id, description, modifier, update_datetime, create_datetime, dictLabel, dictValue, is_default, status, sort, remark, creator_id, dict_data_id, dept_belong_id) VALUES (43, '', 'admin', '2021-03-07 15:07:31.927366', '2021-03-07 15:07:31.927397', '已发送', '2', 0, '1', '2', '消息发送状态:已发送', 1, 14, 1);
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -2,5 +2,5 @@ from django.apps import AppConfig
|
|||
|
||||
|
||||
class PermissionConfig(AppConfig):
|
||||
name = 'permission'
|
||||
name = 'vadmin.system'
|
||||
verbose_name = "权限管理"
|
|
@ -0,0 +1,84 @@
|
|||
import django_filters
|
||||
|
||||
from .models import LoginInfor, OperationLog
|
||||
from ..system.models import DictDetails, DictData, ConfigSettings, MessagePush, SaveFile
|
||||
|
||||
|
||||
class DictDataFilter(django_filters.rest_framework.FilterSet):
|
||||
"""
|
||||
字典管理 简单过滤器
|
||||
"""
|
||||
dictName = django_filters.CharFilter(lookup_expr='icontains')
|
||||
|
||||
class Meta:
|
||||
model = DictData
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class DictDetailsFilter(django_filters.rest_framework.FilterSet):
|
||||
"""
|
||||
字典详情 简单过滤器
|
||||
"""
|
||||
dictLabel = django_filters.CharFilter(lookup_expr='icontains')
|
||||
dictType = django_filters.CharFilter(field_name='dict_data__dictType')
|
||||
|
||||
class Meta:
|
||||
model = DictDetails
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class ConfigSettingsFilter(django_filters.rest_framework.FilterSet):
|
||||
"""
|
||||
参数设置 简单过滤器
|
||||
"""
|
||||
configName = django_filters.CharFilter(lookup_expr='icontains')
|
||||
|
||||
class Meta:
|
||||
model = ConfigSettings
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class SaveFileFilter(django_filters.rest_framework.FilterSet):
|
||||
"""
|
||||
文件管理 简单过滤器
|
||||
"""
|
||||
name = django_filters.CharFilter(lookup_expr='icontains')
|
||||
|
||||
class Meta:
|
||||
model = SaveFile
|
||||
exclude = ('file',)
|
||||
|
||||
|
||||
class MessagePushFilter(django_filters.rest_framework.FilterSet):
|
||||
"""
|
||||
消息通知 简单过滤器
|
||||
"""
|
||||
|
||||
# is_read = django_filters.CharFilter(field_name='messagepushuser_message_push__is_read')
|
||||
title = django_filters.CharFilter(lookup_expr='icontains')
|
||||
|
||||
class Meta:
|
||||
model = MessagePush
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class LoginInforFilter(django_filters.rest_framework.FilterSet):
|
||||
"""
|
||||
登录日志 简单过滤器
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = LoginInfor
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class OperationLogFilter(django_filters.rest_framework.FilterSet):
|
||||
"""
|
||||
操作日志 简单过滤器
|
||||
"""
|
||||
request_modular = django_filters.CharFilter(lookup_expr='icontains')
|
||||
creator_username = django_filters.CharFilter(field_name='creator__username', lookup_expr='icontains')
|
||||
|
||||
class Meta:
|
||||
model = OperationLog
|
||||
fields = '__all__'
|
|
@ -4,4 +4,7 @@ from ..models.dict_details import DictDetails
|
|||
from ..models.web_set import WebSet
|
||||
from ..models.save_file import SaveFile
|
||||
from ..models.message_push import MessagePush
|
||||
from ..models.message_push import MessagePushUser
|
||||
from ..models.logininfor import LoginInfor
|
||||
from ..models.operation_log import OperationLog
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
from django.db.models import CharField, ForeignKey, BooleanField, CASCADE
|
||||
|
||||
from apps.op_drf.models import CoreModel
|
||||
from ...op_drf.models import CoreModel
|
||||
|
||||
|
||||
class ConfigSettings(CoreModel):
|
|
@ -1,6 +1,6 @@
|
|||
from django.db.models import TextField, CharField,ForeignKey
|
||||
|
||||
from apps.op_drf.models import CoreModel
|
||||
from ...op_drf.models import CoreModel
|
||||
|
||||
|
||||
class DictData(CoreModel):
|
|
@ -1,6 +1,6 @@
|
|||
from django.db.models import CharField, ForeignKey, BooleanField, CASCADE
|
||||
|
||||
from apps.op_drf.models import CoreModel
|
||||
from ...op_drf.models import CoreModel
|
||||
|
||||
|
||||
class DictDetails(CoreModel):
|
||||
|
@ -9,9 +9,14 @@ class DictDetails(CoreModel):
|
|||
is_default = BooleanField(verbose_name="是否默认", default=False)
|
||||
status = CharField(max_length=2, verbose_name="字典状态")
|
||||
sort = CharField(max_length=256, verbose_name="字典排序")
|
||||
dict_data = ForeignKey(to='DictData', on_delete=CASCADE, verbose_name="关联字典",db_constraint=False)
|
||||
dict_data = ForeignKey(to='DictData', on_delete=CASCADE, verbose_name="关联字典", db_constraint=False)
|
||||
remark = CharField(max_length=256, verbose_name="备注", null=True, blank=True)
|
||||
|
||||
@classmethod
|
||||
def get_default_dictValue(cls, dictName):
|
||||
instance = DictDetails.objects.filter(dict_data__dictName=dictName, is_default=True).first()
|
||||
return instance and instance.dictValue
|
||||
|
||||
class Meta:
|
||||
verbose_name = '字典详情'
|
||||
verbose_name_plural = verbose_name
|
|
@ -0,0 +1,20 @@
|
|||
from django.db.models import CharField, BooleanField
|
||||
|
||||
from ...op_drf.models import CoreModel
|
||||
|
||||
|
||||
class LoginInfor(CoreModel):
|
||||
session_id = CharField(max_length=64, verbose_name="会话标识", null=True, blank=True)
|
||||
browser = CharField(max_length=64, verbose_name="浏览器")
|
||||
ipaddr = CharField(max_length=32, verbose_name="ip地址", null=True, blank=True)
|
||||
loginLocation = CharField(max_length=64, verbose_name="登录位置", null=True, blank=True)
|
||||
msg = CharField(max_length=64, verbose_name="操作信息", null=True, blank=True)
|
||||
os = CharField(max_length=64, verbose_name="操作系统", null=True, blank=True)
|
||||
status = BooleanField(default=False, verbose_name="登录状态")
|
||||
|
||||
class Meta:
|
||||
verbose_name = '登录日志'
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.creator and self.creator.name}"
|
|
@ -1,9 +1,9 @@
|
|||
from django.db import models
|
||||
from django.db.models import *
|
||||
|
||||
from apps.op_drf.fields import UpdateDateTimeField, CreateDateTimeField
|
||||
from apps.op_drf.models import CoreModel
|
||||
from apps.permission.models import UserProfile
|
||||
from ...op_drf.fields import UpdateDateTimeField, CreateDateTimeField
|
||||
from ...op_drf.models import CoreModel
|
||||
from ...permission.models import UserProfile
|
||||
|
||||
"""
|
||||
消息通知模型
|
||||
|
@ -13,15 +13,16 @@ from apps.permission.models import UserProfile
|
|||
class MessagePush(CoreModel):
|
||||
title = CharField(max_length=128, verbose_name="通知标题")
|
||||
content = TextField(verbose_name="通知内容")
|
||||
message_type = CharField(max_length=8, verbose_name="消息类型")
|
||||
message_type = CharField(max_length=8, verbose_name="通知类型")
|
||||
is_reviewed = BooleanField(default=True, verbose_name="是否审核")
|
||||
status = CharField(max_length=8, verbose_name="消息状态")
|
||||
status = CharField(max_length=8, verbose_name="通知状态")
|
||||
to_path = CharField(max_length=256, verbose_name="跳转路径", null=True, blank=True, )
|
||||
user = ManyToManyField(to="permission.UserProfile",
|
||||
related_name="user", related_query_name="user_query", through='MessagePushUser',
|
||||
through_fields=('message_push', 'user'))
|
||||
|
||||
class Meta:
|
||||
verbose_name = '消息通知'
|
||||
verbose_name = '通知公告'
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
def __str__(self):
|
||||
|
@ -41,5 +42,5 @@ class MessagePushUser(models.Model):
|
|||
create_datetime = CreateDateTimeField() # 创建时间
|
||||
|
||||
class Meta:
|
||||
verbose_name = "消息通知与用户关系"
|
||||
verbose_name = "通知公告与用户关系"
|
||||
verbose_name_plural = verbose_name
|
|
@ -0,0 +1,25 @@
|
|||
from django.db.models import TextField, CharField, BooleanField
|
||||
|
||||
from ...op_drf.models import CoreModel
|
||||
|
||||
|
||||
class OperationLog(CoreModel):
|
||||
request_modular = CharField(max_length=64, verbose_name="请求模块", null=True, blank=True)
|
||||
request_path = CharField(max_length=400, verbose_name="请求地址", null=True, blank=True)
|
||||
request_body = TextField(verbose_name="请求参数", null=True, blank=True)
|
||||
request_method = CharField(max_length=64, verbose_name="请求方式", null=True, blank=True)
|
||||
request_msg = TextField(verbose_name="操作说明", null=True, blank=True)
|
||||
request_ip = CharField(max_length=32, verbose_name="请求ip地址", null=True, blank=True)
|
||||
request_browser = CharField(max_length=32, verbose_name="请求浏览器", null=True, blank=True)
|
||||
response_code = CharField(max_length=32, verbose_name="响应状态码", null=True, blank=True)
|
||||
request_location = CharField(max_length=32, verbose_name="操作地点", null=True, blank=True)
|
||||
request_os = CharField(max_length=64, verbose_name="操作系统", null=True, blank=True)
|
||||
json_result = TextField(verbose_name="返回信息", null=True, blank=True)
|
||||
status = BooleanField(default=False, verbose_name="响应状态")
|
||||
|
||||
class Meta:
|
||||
verbose_name = '操作日志'
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.request_msg}[{self.request_modular}]"
|
|
@ -4,7 +4,7 @@ import uuid
|
|||
from django.db.models import CharField, FileField,BooleanField
|
||||
from django.utils import timezone
|
||||
|
||||
from apps.op_drf.models import CoreModel
|
||||
from ...op_drf.models import CoreModel
|
||||
|
||||
|
||||
def files_path(instance, filename):
|
|
@ -1,6 +1,6 @@
|
|||
from django.db.models import TextField, CharField
|
||||
|
||||
from apps.op_drf.models import CoreModel
|
||||
from ...op_drf.models import CoreModel
|
||||
|
||||
|
||||
class WebSet(CoreModel):
|
|
@ -1,8 +1,8 @@
|
|||
from rest_framework import serializers
|
||||
|
||||
from apps.op_drf.serializers import CustomModelSerializer
|
||||
from apps.permission.serializers import UserProfileSerializer
|
||||
from apps.system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush
|
||||
from .models import LoginInfor, OperationLog
|
||||
from ..op_drf.serializers import CustomModelSerializer
|
||||
from ..system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush, MessagePushUser
|
||||
|
||||
|
||||
# ================================================= #
|
||||
|
@ -162,11 +162,6 @@ class MessagePushSerializer(CustomModelSerializer):
|
|||
"""
|
||||
消息通知 简单序列化器
|
||||
"""
|
||||
# users = UserProfileSerializer(read_only=True)
|
||||
users = serializers.SerializerMethodField(read_only=True)
|
||||
|
||||
def get_users(self, obj):
|
||||
return UserProfileSerializer(obj.user.all(), many=True).data
|
||||
|
||||
class Meta:
|
||||
model = MessagePush
|
||||
|
@ -198,5 +193,83 @@ class ExportMessagePushSerializer(CustomModelSerializer):
|
|||
class Meta:
|
||||
model = MessagePush
|
||||
fields = (
|
||||
'id', 'title', 'content', 'message_type', 'is_reviewed', 'status', 'users', 'creator', 'modifier',
|
||||
'update_datetime', 'create_datetime')
|
||||
'id', 'title', 'content', 'message_type', 'is_reviewed', 'status', 'users', 'creator', 'modifier',
|
||||
'update_datetime', 'create_datetime')
|
||||
|
||||
|
||||
class MessagePushUserSerializer(CustomModelSerializer):
|
||||
"""
|
||||
消息通知 用户查询简单序列化器
|
||||
"""
|
||||
# users = UserProfileSerializer(read_only=True)
|
||||
# users = serializers.SerializerMethodField(read_only=True)
|
||||
is_read = serializers.SerializerMethodField(read_only=True)
|
||||
|
||||
# def get_users(self, obj):
|
||||
# return UserProfileSerializer(obj.user.all(), many=True).data
|
||||
# 返回这个消息是否已读
|
||||
def get_is_read(self, obj):
|
||||
object = MessagePushUser.objects.filter(message_push=obj, user=self.context.get('request').user).first()
|
||||
return object.is_read if object else False
|
||||
|
||||
class Meta:
|
||||
model = MessagePush
|
||||
fields = "__all__"
|
||||
|
||||
def save(self, **kwargs):
|
||||
return super().save(**kwargs)
|
||||
|
||||
|
||||
# ================================================= #
|
||||
# ************** 登录日志 序列化器 ************** #
|
||||
# ================================================= #
|
||||
|
||||
class LoginInforSerializer(CustomModelSerializer):
|
||||
"""
|
||||
登录日志 简单序列化器
|
||||
"""
|
||||
creator_name = serializers.SlugRelatedField(slug_field="username", source="creator", read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = LoginInfor
|
||||
fields = "__all__"
|
||||
|
||||
|
||||
class ExportLoginInforSerializer(CustomModelSerializer):
|
||||
"""
|
||||
导出 登录日志 简单序列化器
|
||||
"""
|
||||
creator_name = serializers.SlugRelatedField(slug_field="username", source="creator", read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = LoginInfor
|
||||
fields = ('id', 'creator_name', 'ipaddr', 'loginLocation', 'browser', 'os',
|
||||
'status', 'msg', 'creator_name')
|
||||
|
||||
|
||||
# ================================================= #
|
||||
# ************** 操作日志 序列化器 ************** #
|
||||
# ================================================= #
|
||||
|
||||
class OperationLogSerializer(CustomModelSerializer):
|
||||
"""
|
||||
操作日志 简单序列化器
|
||||
"""
|
||||
creator_name = serializers.SlugRelatedField(slug_field="username", source="creator", read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = OperationLog
|
||||
fields = "__all__"
|
||||
|
||||
|
||||
class ExportOperationLogSerializer(CustomModelSerializer):
|
||||
"""
|
||||
导出 操作日志 简单序列化器
|
||||
"""
|
||||
creator_name = serializers.SlugRelatedField(slug_field="username", source="creator", read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = OperationLog
|
||||
fields = ('request_modular', 'request_path', 'request_body', 'request_method', 'request_msg', 'request_ip',
|
||||
'request_browser', 'response_code', 'request_location', 'request_os', 'json_result', 'status',
|
||||
'creator_name')
|
|
@ -1,8 +1,9 @@
|
|||
from django.urls import re_path
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
from apps.system.views import DictDataModelViewSet, DictDetailsModelViewSet, \
|
||||
ConfigSettingsModelViewSet, SaveFileModelViewSet, MessagePushModelViewSet, SystemInfoApiView
|
||||
from ..system.views import DictDataModelViewSet, DictDetailsModelViewSet, \
|
||||
ConfigSettingsModelViewSet, SaveFileModelViewSet, MessagePushModelViewSet, LoginInforModelViewSet, \
|
||||
OperationLogModelViewSet
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register(r'dict/type', DictDataModelViewSet)
|
||||
|
@ -10,6 +11,9 @@ router.register(r'dict/data', DictDetailsModelViewSet)
|
|||
router.register(r'config', ConfigSettingsModelViewSet)
|
||||
router.register(r'savefile', SaveFileModelViewSet)
|
||||
router.register(r'message', MessagePushModelViewSet)
|
||||
router.register(r'logininfor', LoginInforModelViewSet)
|
||||
router.register(r'operation_log', OperationLogModelViewSet)
|
||||
|
||||
urlpatterns = [
|
||||
re_path('dict/get/type/(?P<pk>.*)/', DictDetailsModelViewSet.as_view({'get': 'dict_details_list'})),
|
||||
re_path('config/configKey/(?P<pk>.*)/', ConfigSettingsModelViewSet.as_view({'get': 'get_config_key'})),
|
||||
|
@ -24,8 +28,18 @@ urlpatterns = [
|
|||
# 用户获取个人通知列表
|
||||
re_path('message/receive/', MessagePushModelViewSet.as_view({"get": "get_received_messages"})),
|
||||
# 消息通知导出
|
||||
re_path('message/export/', MessagePushModelViewSet.as_view({'get': 'export',})),
|
||||
|
||||
re_path('sys/info/', SystemInfoApiView.as_view())
|
||||
re_path('message/export/', MessagePushModelViewSet.as_view({'get': 'export', })),
|
||||
# 用户个人消息列表
|
||||
re_path('message/user_messages/', MessagePushModelViewSet.as_view({'get': 'get_user_messages', })),
|
||||
# 改为已读
|
||||
re_path('message/is_read/(?P<pk>.*)/', MessagePushModelViewSet.as_view({'put': 'update_is_read', })),
|
||||
# 清空操作日志
|
||||
re_path('operation_log/clean/', OperationLogModelViewSet.as_view({'delete': 'clean_all', })),
|
||||
# 导出操作日志
|
||||
re_path('operation_log/export/', OperationLogModelViewSet.as_view({'get': 'export', })),
|
||||
# 清空登录日志
|
||||
re_path('logininfor/clean/', LoginInforModelViewSet.as_view({'delete': 'clean_all', })),
|
||||
# 导出登录日志
|
||||
re_path('logininfor/export/', LoginInforModelViewSet.as_view({'get': 'export', })),
|
||||
]
|
||||
urlpatterns += router.urls
|
|
@ -1,18 +1,21 @@
|
|||
from django.db.models import Q
|
||||
from rest_framework.request import Request
|
||||
from rest_framework.views import APIView
|
||||
|
||||
from apps.op_drf.filters import DataLevelPermissionsFilter
|
||||
from apps.op_drf.viewsets import CustomModelViewSet
|
||||
from apps.system.filters import DictDetailsFilter, DictDataFilter, ConfigSettingsFilter
|
||||
from apps.system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush
|
||||
from apps.system.serializers import DictDataSerializer, DictDataCreateUpdateSerializer, DictDetailsSerializer, \
|
||||
from .models import LoginInfor, OperationLog
|
||||
from ..op_drf.filters import DataLevelPermissionsFilter
|
||||
from ..op_drf.viewsets import CustomModelViewSet
|
||||
from ..system.filters import DictDetailsFilter, DictDataFilter, ConfigSettingsFilter, MessagePushFilter, \
|
||||
SaveFileFilter, LoginInforFilter, OperationLogFilter
|
||||
from ..system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush
|
||||
from ..system.models import MessagePushUser
|
||||
from ..system.serializers import DictDataSerializer, DictDataCreateUpdateSerializer, DictDetailsSerializer, \
|
||||
DictDetailsCreateUpdateSerializer, DictDetailsListSerializer, ConfigSettingsSerializer, \
|
||||
ConfigSettingsCreateUpdateSerializer, SaveFileSerializer, SaveFileCreateUpdateSerializer, \
|
||||
ExportConfigSettingsSerializer, ExportDictDataSerializer, ExportDictDetailsSerializer, \
|
||||
MessagePushSerializer, MessagePushCreateUpdateSerializer, ExportMessagePushSerializer
|
||||
from utils.export_excel import export_excel_save_model
|
||||
from utils.response import SuccessResponse
|
||||
from utils.system_info_utils import get_memory_used_percent, get_cpu_used_percent, get_disk_used_percent
|
||||
MessagePushSerializer, MessagePushCreateUpdateSerializer, ExportMessagePushSerializer, LoginInforSerializer, \
|
||||
OperationLogSerializer, ExportOperationLogSerializer, ExportLoginInforSerializer
|
||||
from ..utils.export_excel import export_excel_save_model
|
||||
from ..utils.response import SuccessResponse
|
||||
|
||||
|
||||
class DictDataModelViewSet(CustomModelViewSet):
|
||||
|
@ -25,6 +28,7 @@ class DictDataModelViewSet(CustomModelViewSet):
|
|||
update_serializer_class = DictDataCreateUpdateSerializer
|
||||
# list_serializer_class = ListRoleSerializer
|
||||
# retrieve_serializer_class = DetailRoleSerializer
|
||||
extra_filter_backends = [DataLevelPermissionsFilter]
|
||||
filter_class = DictDataFilter
|
||||
# update_extra_permission_classes = (IsManagerPermission,)
|
||||
# destroy_extra_permission_classes = (IsManagerPermission,)
|
||||
|
@ -133,16 +137,16 @@ class ConfigSettingsModelViewSet(CustomModelViewSet):
|
|||
|
||||
class SaveFileModelViewSet(CustomModelViewSet):
|
||||
"""
|
||||
参数设置 模型的CRUD视图
|
||||
文件管理 模型的CRUD视图
|
||||
"""
|
||||
queryset = SaveFile.objects.all()
|
||||
serializer_class = SaveFileSerializer
|
||||
create_serializer_class = SaveFileCreateUpdateSerializer
|
||||
update_serializer_class = SaveFileCreateUpdateSerializer
|
||||
# filter_class = ConfigSettingsFilter
|
||||
filter_class = SaveFileFilter
|
||||
extra_filter_backends = [DataLevelPermissionsFilter]
|
||||
search_fields = ('configName',)
|
||||
ordering = 'id' # 默认排序
|
||||
ordering = '-create_datetime' # 默认排序
|
||||
|
||||
|
||||
class MessagePushModelViewSet(CustomModelViewSet):
|
||||
|
@ -154,6 +158,7 @@ class MessagePushModelViewSet(CustomModelViewSet):
|
|||
create_serializer_class = MessagePushCreateUpdateSerializer
|
||||
update_serializer_class = MessagePushCreateUpdateSerializer
|
||||
extra_filter_backends = [DataLevelPermissionsFilter]
|
||||
filter_class = MessagePushFilter
|
||||
ordering = "-update_datetime" # 默认排序
|
||||
|
||||
def get_message_list(self, request: Request, *args, **kwargs):
|
||||
|
@ -164,13 +169,19 @@ class MessagePushModelViewSet(CustomModelViewSet):
|
|||
data = MessagePushSerializer(messages, many=True)
|
||||
return SuccessResponse(msg="返回", data=data)
|
||||
|
||||
def get_received_messages(self, request: Request, *args, **kwargs):
|
||||
def get_user_messages(self, request: Request, *args, **kwargs):
|
||||
"""
|
||||
用户获取未读消息通知列表
|
||||
获取用户自己消息列表
|
||||
"""
|
||||
|
||||
queryset = self.filter_queryset(self.get_queryset())
|
||||
queryset = queryset.filter(recipient_id=request.user.id, is_read=0)
|
||||
is_read = request.query_params.get('is_read', None)
|
||||
if is_read:
|
||||
if is_read == 'False':
|
||||
queryset = queryset.filter(Q(messagepushuser_message_push__is_read=is_read) | Q(user=None))
|
||||
else:
|
||||
queryset = queryset.filter(messagepushuser_message_push__is_read=is_read)
|
||||
|
||||
queryset = queryset.filter(is_reviewed=True)
|
||||
page = self.paginate_queryset(queryset)
|
||||
if hasattr(self, 'handle_logging'):
|
||||
self.handle_logging(request, *args, **kwargs)
|
||||
|
@ -184,11 +195,14 @@ class MessagePushModelViewSet(CustomModelViewSet):
|
|||
serializer = self.get_serializer(queryset, many=True)
|
||||
return SuccessResponse(serializer.data)
|
||||
|
||||
def get_received_messages_count(self, request: Request, *args, **kwargs):
|
||||
def update_is_read(self, request: Request, *args, **kwargs):
|
||||
"""
|
||||
获取用户未读消息数量
|
||||
修改为已读
|
||||
"""
|
||||
pass
|
||||
instance, _ = MessagePushUser.objects.get_or_create(message_push_id=kwargs.get('pk'), user=request.user)
|
||||
instance.is_read = True
|
||||
instance.save()
|
||||
return SuccessResponse()
|
||||
|
||||
def export(self, request: Request, *args, **kwargs):
|
||||
"""
|
||||
|
@ -203,18 +217,51 @@ class MessagePushModelViewSet(CustomModelViewSet):
|
|||
return SuccessResponse(export_excel_save_model(request, field_data, data, '导出岗位数据.xls'))
|
||||
|
||||
|
||||
class SystemInfoApiView(APIView):
|
||||
class LoginInforModelViewSet(CustomModelViewSet):
|
||||
"""
|
||||
系统服务监控视图
|
||||
登录日志 模型的CRUD视图
|
||||
"""
|
||||
queryset = LoginInfor.objects.all()
|
||||
serializer_class = LoginInforSerializer
|
||||
filter_class = LoginInforFilter
|
||||
extra_filter_backends = [DataLevelPermissionsFilter]
|
||||
ordering = '-create_datetime' # 默认排序
|
||||
export_field_data = ['访问编号', '用户名称', '登录地址', '登录地点', '浏览器', '操作系统',
|
||||
'登录状态', '操作信息', '登录日期']
|
||||
export_serializer_class = ExportLoginInforSerializer
|
||||
|
||||
def clean_all(self, request: Request, *args, **kwargs):
|
||||
"""
|
||||
清空登录日志
|
||||
:param request:
|
||||
:param args:
|
||||
:param kwargs:
|
||||
:return:
|
||||
"""
|
||||
self.get_queryset().delete()
|
||||
return SuccessResponse(msg="清空成功")
|
||||
|
||||
|
||||
class OperationLogModelViewSet(CustomModelViewSet):
|
||||
"""
|
||||
def get(self, request, *args, **kwargs):
|
||||
# 获取内存使用率
|
||||
memory_used_percent = get_memory_used_percent()
|
||||
# 获取cpu使用率
|
||||
cpu_used_percent = get_cpu_used_percent()
|
||||
# 获取硬盘使用率
|
||||
disk_used_percent = get_disk_used_percent()
|
||||
return SuccessResponse(data={"memory_used_percent": memory_used_percent,
|
||||
"cpu_used_percent": cpu_used_percent,
|
||||
"disk_used_percent": disk_used_percent
|
||||
})
|
||||
操作日志 模型的CRUD视图
|
||||
"""
|
||||
queryset = OperationLog.objects.all()
|
||||
serializer_class = OperationLogSerializer
|
||||
filter_class = OperationLogFilter
|
||||
extra_filter_backends = [DataLevelPermissionsFilter]
|
||||
ordering = '-create_datetime' # 默认排序
|
||||
export_field_data = ['请求模块', '请求地址', '请求参数', '请求方式', '操作说明', '请求ip地址',
|
||||
'请求浏览器', '响应状态码', '操作地点', '操作系统', '返回信息', '响应状态', '操作用户名']
|
||||
export_serializer_class = ExportOperationLogSerializer
|
||||
|
||||
def clean_all(self, request: Request, *args, **kwargs):
|
||||
"""
|
||||
清空操作日志
|
||||
:param request:
|
||||
:param args:
|
||||
:param kwargs:
|
||||
:return:
|
||||
"""
|
||||
self.get_queryset().delete()
|
||||
return SuccessResponse(msg="清空成功")
|
|
@ -0,0 +1,57 @@
|
|||
"""application URL Configuration
|
||||
|
||||
The `urlpatterns` list routes URLs to views. For more information please see:
|
||||
https://docs.djangoproject.com/en/1.11/topics/http/urls/
|
||||
Examples:
|
||||
Function views
|
||||
1. Add an import: from my_app import views
|
||||
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
|
||||
Class-based views
|
||||
1. Add an import: from other_app.views import Home
|
||||
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
|
||||
Including another URLconf
|
||||
1. Import the include() function: from django.conf.urls import url, include
|
||||
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
|
||||
"""
|
||||
|
||||
from captcha.conf import settings as ca_settings
|
||||
from captcha.helpers import captcha_image_url, captcha_audio_url
|
||||
from captcha.models import CaptchaStore
|
||||
from django.conf.urls import url
|
||||
from django.urls import re_path, include
|
||||
from rest_framework.documentation import include_docs_urls
|
||||
from rest_framework.views import APIView
|
||||
|
||||
from .op_drf.response import SuccessResponse
|
||||
from .permission.views import GetUserProfileView, GetRouters
|
||||
from .utils.login import LoginView, LogoutView
|
||||
|
||||
|
||||
class CaptchaRefresh(APIView):
|
||||
authentication_classes = []
|
||||
permission_classes = []
|
||||
|
||||
def get(self, request):
|
||||
new_key = CaptchaStore.pick()
|
||||
to_json_response = {
|
||||
"key": new_key,
|
||||
"image_url": captcha_image_url(new_key),
|
||||
"audio_url": captcha_audio_url(new_key) if ca_settings.CAPTCHA_FLITE_PATH else None,
|
||||
}
|
||||
return SuccessResponse(to_json_response)
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
re_path('api-token-auth/', LoginView.as_view(), name='api_token_auth'),
|
||||
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
|
||||
url(r'docs/', include_docs_urls(title='接口文档')),
|
||||
re_path(r'^login/$', LoginView.as_view()),
|
||||
re_path(r'^logout/$', LogoutView.as_view()),
|
||||
re_path(r'^getInfo/$', GetUserProfileView.as_view()),
|
||||
re_path(r'^getRouters/$', GetRouters.as_view()),
|
||||
url(r"captcha/refresh/$", CaptchaRefresh.as_view(), name="captcha-refresh"), # 刷新验证码
|
||||
re_path('captcha/', include('captcha.urls')), # 图片验证码 路由
|
||||
re_path(r'^permission/', include('apps.vadmin.permission.urls')),
|
||||
re_path(r'^system/', include('apps.vadmin.system.urls')),
|
||||
|
||||
]
|
|
@ -3,13 +3,17 @@
|
|||
"""
|
||||
import logging
|
||||
|
||||
import jwt
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.core.cache import cache
|
||||
from django.utils.six import text_type
|
||||
from django.utils.translation import ugettext as _
|
||||
from rest_framework import exceptions
|
||||
from rest_framework_jwt.utils import jwt_decode_handler
|
||||
|
||||
from .decorators import exceptionHandler
|
||||
from .jwt_util import jwt_get_session_id
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
User = get_user_model()
|
||||
|
@ -20,12 +24,21 @@ class OpAuthJwtAuthentication(object):
|
|||
统一JWT认证(环境允许情况下, 推荐使用RedisOpAuthJwtAuthentication)
|
||||
"""
|
||||
|
||||
@exceptionHandler()
|
||||
def authenticate(self, request):
|
||||
token = self.get_header_authorization(request) or self.get_cookie_authorization(request)
|
||||
if not token:
|
||||
return None
|
||||
payload = jwt_decode_handler(token)
|
||||
try:
|
||||
payload = jwt_decode_handler(token)
|
||||
except jwt.ExpiredSignature:
|
||||
msg = _('Signature has expired.')
|
||||
raise exceptions.AuthenticationFailed(msg)
|
||||
except jwt.DecodeError:
|
||||
msg = _('Error decoding signature.')
|
||||
raise exceptions.AuthenticationFailed(msg)
|
||||
except jwt.InvalidTokenError:
|
||||
raise exceptions.AuthenticationFailed()
|
||||
|
||||
username = payload.get('username', None)
|
||||
if not username:
|
||||
return None
|
||||
|
@ -51,7 +64,7 @@ class OpAuthJwtAuthentication(object):
|
|||
if not auth:
|
||||
return ''
|
||||
auth = str(auth, encoding='utf-8').split()
|
||||
if len(auth) != 2 or auth[0].upper() != settings.JWT_AUTH.get('JWT_AUTH_HEADER_PREFIX', 'JWT'):
|
||||
if len(auth) != 2 or auth[0].upper() != settings.JWT_AUTH.get('JWT_AUTH_HEADER_PREFIX', 'JWT').upper():
|
||||
return ''
|
||||
return auth[1]
|
||||
|
||||
|
@ -75,15 +88,15 @@ class RedisOpAuthJwtAuthentication(OpAuthJwtAuthentication):
|
|||
"""
|
||||
prefix = settings.JWT_AUTH.get('JWT_AUTH_HEADER_PREFIX', 'JWT')
|
||||
|
||||
@exceptionHandler()
|
||||
def authenticate(self, request):
|
||||
res = super().authenticate(request)
|
||||
if res:
|
||||
user, token = super().authenticate(request)
|
||||
key = f"{self.prefix}_{user.username}"
|
||||
user, token = res
|
||||
session_id = jwt_get_session_id(token)
|
||||
key = f"{self.prefix}_{session_id}_{user.username}"
|
||||
redis_token = cache.get(key)
|
||||
if redis_token == token:
|
||||
return user, token
|
||||
else:
|
||||
return None
|
||||
raise exceptions.AuthenticationFailed("登录信息失效,请重新登录!")
|
||||
return None
|
|
@ -7,7 +7,6 @@ from django.contrib.auth.backends import ModelBackend
|
|||
from django.utils import timezone
|
||||
from rest_framework.authentication import SessionAuthentication as DjangoSessionAuthentication
|
||||
|
||||
from utils.exceptions import GenException
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
UserModel = get_user_model()
|
|
@ -2,7 +2,9 @@ import logging
|
|||
import traceback
|
||||
|
||||
from rest_framework import serializers, exceptions
|
||||
from rest_framework.views import set_rollback
|
||||
|
||||
from .request_util import get_verbose_name
|
||||
from .response import ErrorResponse
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -16,9 +18,9 @@ class APIException(Exception):
|
|||
"""
|
||||
|
||||
def __init__(self, code=201, message='API异常', args=('API异常',)):
|
||||
self.args = args
|
||||
self.code = code
|
||||
self.message = message
|
||||
args = args
|
||||
code = code
|
||||
message = message
|
||||
|
||||
def __str__(self):
|
||||
return self.message
|
||||
|
@ -35,7 +37,7 @@ class FrameworkException(Exception):
|
|||
|
||||
def __init__(self, message='框架异常', *args: object, **kwargs: object) -> None:
|
||||
super().__init__(*args, **kwargs)
|
||||
self.message = message
|
||||
message = message
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f"{self.message}"
|
||||
|
@ -63,13 +65,17 @@ def op_exception_handler(ex, context):
|
|||
"""
|
||||
msg = ''
|
||||
code = '201'
|
||||
request = context.get('request')
|
||||
request.session['model_name'] = get_verbose_name(view=context.get('view'))
|
||||
|
||||
if isinstance(ex, AuthenticationFailed):
|
||||
code = 401
|
||||
msg = ex.detail
|
||||
elif isinstance(ex, DRFAPIException):
|
||||
# set_rollback()
|
||||
set_rollback()
|
||||
msg = ex.detail
|
||||
elif isinstance(ex, exceptions.APIException):
|
||||
set_rollback()
|
||||
msg = ex.detail
|
||||
elif isinstance(ex, Exception):
|
||||
logger.error(traceback.format_exc())
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue