From 65c87d7b1fa1118285748c16e4cb5a028efb49bd Mon Sep 17 00:00:00 2001 From: inji-hanbin Date: Fri, 14 Oct 2022 19:23:57 +0800 Subject: [PATCH 01/14] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20=E6=96=B0=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E6=90=9C=E7=B4=A2=E5=A2=9E=E5=BC=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1/schema/user.py | 25 +++++++++++++++++++++++-- api/v1/schema/user_group.py | 10 ++++++++++ api/v1/views/user.py | 26 ++++++++++++++++++++------ api/v1/views/user_group.py | 16 ++++++++++++++++ 4 files changed, 69 insertions(+), 8 deletions(-) diff --git a/api/v1/schema/user.py b/api/v1/schema/user.py index ae4824722..0a46a4a37 100644 --- a/api/v1/schema/user.py +++ b/api/v1/schema/user.py @@ -7,8 +7,15 @@ from arkid.core.schema import ResponseSchema class UserListQueryIn(Schema): - name:str = Field( - default=None + order:str = Field( + default=None, + title=_("排序字段"), + notranslation=True + ) + username:str = Field( + default=None, + title=_("用户名"), + notranslation=True ) class UserListItemOut(ModelSchema): @@ -24,6 +31,20 @@ class Config: class UserListOut(ResponseSchema): data: List[UserListItemOut] + +class UserPullItemOut(ModelSchema): + + class Config: + model = User + model_fields = ['id', 'username', 'avatar','is_platform_user','is_del','is_active','created','updated'] + + created:Any = Field( + title=_("注册时间") + ) + +class UserPullOut(ResponseSchema): + data: List[UserPullItemOut] + class UserCreateIn(ModelSchema): class Config: model = User diff --git a/api/v1/schema/user_group.py b/api/v1/schema/user_group.py index 0d5485035..b93385ac7 100644 --- a/api/v1/schema/user_group.py +++ b/api/v1/schema/user_group.py @@ -34,6 +34,16 @@ class UserGroupListOut(ResponseSchema): data: List[UserGroupListItemOut] +class UserGroupPullItemOut(ModelSchema): + parent_id:UUID = Field(default=None, alias='parent.id') + class Config: + model = UserGroup + model_fields = ['id', 'name','is_del','is_active','created','updated'] + +class UserGroupPullOut(ResponseSchema): + + data: List[UserGroupPullItemOut] + class UserGroupCreateOut(ResponseSchema): pass diff --git a/api/v1/views/user.py b/api/v1/views/user.py index ebe1664c3..f6365b4ab 100644 --- a/api/v1/views/user.py +++ b/api/v1/views/user.py @@ -13,7 +13,7 @@ UserCreateIn, UserCreateOut, UserDeleteOut, UserListItemOut, UserListOut, UserListQueryIn, UserOut, UserUpdateIn, UserUpdateOut, - UserFieldsOut, + UserFieldsOut, UserPullOut, UserPullItemOut, ) from arkid.core.error import ErrorCode, ErrorDict from arkid.core.constants import NORMAL_USER, TENANT_ADMIN, PLATFORM_ADMIN @@ -25,13 +25,13 @@ @api.get("/tenant/{tenant_id}/users/",response=List[UserListItemOut], tags=['用户']) @operation(UserListOut,roles=[TENANT_ADMIN, PLATFORM_ADMIN]) @paginate(CustomPagination) -def user_list(request, tenant_id: str,order:str = None, query_data: UserListQueryIn=Query(...)): +def user_list(request, tenant_id: str, query_data: UserListQueryIn=Query(...)): from arkid.core.perm.permission_data import PermissionData users = User.expand_objects.filter(tenant_id=tenant_id, is_del=False) - - if order: - users = users.order_by(order) - + if query_data.username: + users = users.filter(username__icontains=query_data.username) + if query_data.order: + users = users.order_by(query_data.order) login_user = request.user tenant = request.tenant pd = PermissionData() @@ -42,6 +42,8 @@ def user_list(request, tenant_id: str,order:str = None, query_data: UserListQuer return list(users) + + @api.get("/tenant/{tenant_id}/user_no_super/",response=UserListOut, tags=['用户']) @operation(UserListOut,roles=[TENANT_ADMIN, PLATFORM_ADMIN]) # @paginate(CustomPagination) @@ -77,6 +79,18 @@ def user_create(request, tenant_id: str,data:UserCreateIn): return {"data":{"user":user.id.hex}} +@api.get("/tenant/{tenant_id}/users/pull/",response=List[UserPullItemOut], tags=['用户']) +@operation(UserPullOut,roles=[PLATFORM_ADMIN]) +@paginate(CustomPagination) +def user_pull(request, tenant_id: str): + ''' + 拉取用户 + ''' + users = User.objects.filter( + tenant_id=tenant_id + ).order_by('created') + return users + # ------------- 删除用户接口 -------------- @api.delete("/tenant/{tenant_id}/users/{id}/",response=UserDeleteOut, tags=['用户']) @operation(UserDeleteOut,roles=[TENANT_ADMIN, PLATFORM_ADMIN]) diff --git a/api/v1/views/user_group.py b/api/v1/views/user_group.py index d22a45b6d..6198e6335 100644 --- a/api/v1/views/user_group.py +++ b/api/v1/views/user_group.py @@ -72,6 +72,22 @@ def list_groups(request, tenant_id: str, parent_id: str = None): return {"data": list(usergroups.all())} +@api.get("/tenant/{tenant_id}/user_groups/pull/", response=List[UserGroupPullItemOut], tags=['用户分组']) +@operation(UserGroupPullOut, roles=[PLATFORM_ADMIN]) +@paginate(CustomPagination) +def user_group_pull(request, tenant_id: str, parent_id: str = ''): + ''' + 拉取用户分组 + ''' + usergroups = UserGroup.objects.filter( + tenant_id=tenant_id, + ) + if parent_id != '': + usergroups = usergroups.filter(parent__id=parent_id) + usergroups = usergroups.order_by('created') + return usergroups + + @api.get("/tenant/{tenant_id}/user_groups/{id}/", response=UserGroupDetailOut, tags=['用户分组']) @operation(roles=[TENANT_ADMIN, PLATFORM_ADMIN]) def get_group(request, tenant_id: str, id: str): From 94b4315932df78124fce1fe91fd59d79d3aa503f Mon Sep 17 00:00:00 2001 From: wely Date: Fri, 14 Oct 2022 21:03:38 +0800 Subject: [PATCH 02/14] =?UTF-8?q?docs:=20=E2=9C=8F=EF=B8=8F=20=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E6=A0=BC=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 +- ...03\351\231\220\347\256\241\347\220\206.md" | 58 +++++++++---------- ...50\346\210\267\347\256\241\347\220\206.md" | 8 +-- 3 files changed, 37 insertions(+), 34 deletions(-) diff --git a/.gitignore b/.gitignore index fe0247034..a7ac21b4f 100644 --- a/.gitignore +++ b/.gitignore @@ -201,4 +201,7 @@ arkid_celery_tasks .devcontainer/ storage/ results.sqlite -tasks/ + +tasks/* +~/* +tasks diff --git "a/docs/ \347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\346\211\213\345\206\214/ \347\247\237\346\210\267\347\256\241\347\220\206\345\221\230/\346\235\203\351\231\220\347\256\241\347\220\206.md" "b/docs/ \347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\346\211\213\345\206\214/ \347\247\237\346\210\267\347\256\241\347\220\206\345\221\230/\346\235\203\351\231\220\347\256\241\347\220\206.md" index 97868d8ba..cac7d07e2 100644 --- "a/docs/ \347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\346\211\213\345\206\214/ \347\247\237\346\210\267\347\256\241\347\220\206\345\221\230/\346\235\203\351\231\220\347\256\241\347\220\206.md" +++ "b/docs/ \347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\346\211\213\345\206\214/ \347\247\237\346\210\267\347\256\241\347\220\206\345\221\230/\346\235\203\351\231\220\347\256\241\347\220\206.md" @@ -4,16 +4,16 @@ 查看登录用户所能读取到的权限信息,进行权限的新建和编辑等 -=== "打开权限列表" +* "打开权限列表" [![jbmeAI.md.jpg](https://s1.ax1x.com/2022/07/20/jbmeAI.md.jpg)](https://imgtu.com/i/jbmeAI) -=== "新建权限" +* "新建权限" [![jbm7VA.md.jpg](https://s1.ax1x.com/2022/07/20/jbm7VA.md.jpg)](https://imgtu.com/i/jbm7VA) -=== "查看创建结果" +* "查看创建结果" [![jbmO8f.md.jpg](https://s1.ax1x.com/2022/07/20/jbmO8f.md.jpg)](https://imgtu.com/i/jbmO8f) -=== "删除权限" +* "删除权限" 只有自己创建的权限允许删除,不能删除系统权限 [![jbn9Vs.md.jpg](https://s1.ax1x.com/2022/07/20/jbn9Vs.md.jpg)](https://imgtu.com/i/jbn9Vs) -=== "权限搜索" +* "权限搜索" [![jbnkGV.md.jpg](https://s1.ax1x.com/2022/07/20/jbnkGV.md.jpg)](https://imgtu.com/i/jbnkGV) @@ -25,18 +25,18 @@ 可以再这里创建新的权限分组,并编辑其中权限。 -=== "打开权限分组列表" +* "打开权限分组列表" [![jbKEB4.md.jpg](https://s1.ax1x.com/2022/07/20/jbKEB4.md.jpg)](https://imgtu.com/i/jbKEB4) -=== "新建权限分组" +* "新建权限分组" [![jbK3uD.md.jpg](https://s1.ax1x.com/2022/07/20/jbK3uD.md.jpg)](https://imgtu.com/i/jbK3uD) -=== "查看创建结果" +* "查看创建结果" 只有自己创建的权限分组允许删除和编辑,不能删除和编辑系统分组 [![jbKaCt.md.jpg](https://s1.ax1x.com/2022/07/20/jbKaCt.md.jpg)](https://imgtu.com/i/jbKaCt) -=== "查看权限分组的权限" +* "查看权限分组的权限" [![jbKcUs.md.jpg](https://s1.ax1x.com/2022/07/20/jbKcUs.md.jpg)](https://imgtu.com/i/jbKcUs) -=== "权限分组添加权限" +* "权限分组添加权限" [![jbKhvT.md.jpg](https://s1.ax1x.com/2022/07/20/jbKhvT.md.jpg)](https://imgtu.com/i/jbKhvT) -=== "查看添加权限结果" +* "查看添加权限结果" 只有自己添加的权限才可以删除 [![jbKIrF.md.jpg](https://s1.ax1x.com/2022/07/20/jbKIrF.md.jpg)](https://imgtu.com/i/jbKIrF) @@ -52,43 +52,43 @@ ### 用户权限 -=== "打开用户权限列表" +* "打开用户权限列表" [![jbQ8kd.md.jpg](https://s1.ax1x.com/2022/07/20/jbQ8kd.md.jpg)](https://imgtu.com/i/jbQ8kd) -=== "添加用户权限" +* "添加用户权限" [![jbQyhn.md.jpg](https://s1.ax1x.com/2022/07/20/jbQyhn.md.jpg)](https://imgtu.com/i/jbQyhn) -=== "查看添加权限结果" +* "查看添加权限结果" [![jbQH91.md.jpg](https://s1.ax1x.com/2022/07/20/jbQH91.md.jpg)](https://imgtu.com/i/jbQH91) -=== "删除用户权限" +* "删除用户权限" [![jblC9I.md.jpg](https://s1.ax1x.com/2022/07/20/jblC9I.md.jpg)](https://imgtu.com/i/jblC9I) ### 用户分组权限 -=== "打开用户分组列表" +* "打开用户分组列表" [![jb1lid.md.jpg](https://s1.ax1x.com/2022/07/20/jb1lid.md.jpg)](https://imgtu.com/i/jb1lid) -=== "添加用户分组权限" +* "添加用户分组权限" [![jb10ij.md.jpg](https://s1.ax1x.com/2022/07/20/jb10ij.md.jpg)](https://imgtu.com/i/jb10ij) -=== "查看添加的用户分组权限" +* "查看添加的用户分组权限" [![jb1Wo4.md.jpg](https://s1.ax1x.com/2022/07/20/jb1Wo4.md.jpg)](https://imgtu.com/i/jb1Wo4) -=== "删除用户分组权限" +* "删除用户分组权限" [![jb1OTe.md.jpg](https://s1.ax1x.com/2022/07/20/jb1OTe.md.jpg)](https://imgtu.com/i/jb1OTe) ### 应用权限 -=== "打开应用权限列表" +* "打开应用权限列表" [![vThfr4.md.jpg](https://s1.ax1x.com/2022/09/05/vThfr4.md.jpg)](https://imgse.com/i/vThfr4) -=== "添加应用权限" +* "添加应用权限" [![vThoI1.md.jpg](https://s1.ax1x.com/2022/09/05/vThoI1.md.jpg)](https://imgse.com/i/vThoI1) -=== "查看添加的应用权限" +* "查看添加的应用权限" [![vTh5Z9.md.jpg](https://s1.ax1x.com/2022/09/05/vTh5Z9.md.jpg)](https://imgse.com/i/vTh5Z9) -=== "删除应用权限" +* "删除应用权限" [![vThIaR.md.jpg](https://s1.ax1x.com/2022/09/05/vThIaR.md.jpg)](https://imgse.com/i/vThIaR) ### 如果使用应用ID和Secret访问 -=== "获取应用ID和Secret" +* "获取应用ID和Secret" [![vThhqJ.md.jpg](https://s1.ax1x.com/2022/09/05/vThhqJ.md.jpg)](https://imgse.com/i/vThhqJ) -=== "使用应用ID和Secret访问,需要在headers加上APP-ID和APP-SECRET参数" +* "使用应用ID和Secret访问,需要在headers加上APP-ID和APP-SECRET参数" [![vTh7Px.md.jpg](https://s1.ax1x.com/2022/09/05/vTh7Px.md.jpg)](https://imgse.com/i/vTh7Px) ## 授权规则 @@ -99,11 +99,11 @@ 不同插件处理授权规则的方式不同,各自配置也不同,请参看[详细插件文档](../../../../%20%20系统插件/com_longgui_impower_rule/DefaultImpowerRule/) -=== "打开授权规则列表" +* "打开授权规则列表" [![xdAhFJ.jpg](https://s1.ax1x.com/2022/10/13/xdAhFJ.jpg)](https://imgse.com/i/xdAhFJ) -=== "新建授权规则" +* "新建授权规则" [![xdAcLT.jpg](https://s1.ax1x.com/2022/10/13/xdAcLT.jpg)](https://imgse.com/i/xdAcLT) -=== "编辑授权规则" +* "编辑授权规则" [![xdALwD.jpg](https://s1.ax1x.com/2022/10/13/xdALwD.jpg)](https://imgse.com/i/xdALwD) -=== "删除授权规则" +* "删除授权规则" [![xdAOTe.jpg](https://s1.ax1x.com/2022/10/13/xdAOTe.jpg)](https://imgse.com/i/xdAOTe) diff --git "a/docs/ \347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\346\211\213\345\206\214/ \347\247\237\346\210\267\347\256\241\347\220\206\345\221\230/\347\224\250\346\210\267\347\256\241\347\220\206.md" "b/docs/ \347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\346\211\213\345\206\214/ \347\247\237\346\210\267\347\256\241\347\220\206\345\221\230/\347\224\250\346\210\267\347\256\241\347\220\206.md" index 2af7c634c..f6e2437a7 100644 --- "a/docs/ \347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\346\211\213\345\206\214/ \347\247\237\346\210\267\347\256\241\347\220\206\345\221\230/\347\224\250\346\210\267\347\256\241\347\220\206.md" +++ "b/docs/ \347\224\250\346\210\267\346\214\207\345\215\227/\347\224\250\346\210\267\346\211\213\345\206\214/ \347\247\237\346\210\267\347\256\241\347\220\206\345\221\230/\347\224\250\346\210\267\347\256\241\347\220\206.md" @@ -15,9 +15,9 @@ [![xN8ZOs.md.jpg](https://s1.ax1x.com/2022/10/11/xN8ZOs.md.jpg)](https://imgse.com/i/xN8ZOs) * 导入 点击菜单 "用户管理>用户列表>导入" -=== "选择下拉,点击导出模板" +* "选择下拉,点击导出模板" [![xNJniV.md.jpg](https://s1.ax1x.com/2022/10/11/xNJniV.md.jpg)](https://imgse.com/i/xNJniV) -=== "填写表格数据,点击导入" +* "填写表格数据,点击导入" [![xNJGZR.md.jpg](https://s1.ax1x.com/2022/10/11/xNJGZR.md.jpg)](https://imgse.com/i/xNJGZR) * 导出 点击菜单 "用户管理>用户列表>导出" @@ -41,9 +41,9 @@ [![xUZPZF.md.jpg](https://s1.ax1x.com/2022/10/12/xUZPZF.md.jpg)](https://imgse.com/i/xUZPZF) * 导入 点击菜单 "用户管理>用户分组>导入" -=== "选择下拉,点击导出模板" +* "选择下拉,点击导出模板" [![xUZZxx.md.jpg](https://s1.ax1x.com/2022/10/12/xUZZxx.md.jpg)](https://imgse.com/i/xUZZxx) -=== "填写表格数据,点击导入" +* "填写表格数据,点击导入" [![xUZQde.md.jpg](https://s1.ax1x.com/2022/10/12/xUZQde.md.jpg)](https://imgse.com/i/xUZQde) * 导出 点击菜单 "用户管理>用户分组>导出" From 061ce66ea72aadfbc5413e3ebd234433785c8b9e Mon Sep 17 00:00:00 2001 From: wely Date: Mon, 17 Oct 2022 10:04:16 +0800 Subject: [PATCH 03/14] =?UTF-8?q?docs:=20=E2=9C=8F=EF=B8=8F=20=E5=8E=9F?= =?UTF-8?q?=E7=94=9F=E9=83=A8=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...37\347\224\237\351\203\250\347\275\262.md" | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 "docs/ \345\277\253\351\200\237\345\274\200\345\247\213/ \347\247\201\346\234\211\345\214\226\351\203\250\347\275\262/\345\216\237\347\224\237\351\203\250\347\275\262.md" diff --git "a/docs/ \345\277\253\351\200\237\345\274\200\345\247\213/ \347\247\201\346\234\211\345\214\226\351\203\250\347\275\262/\345\216\237\347\224\237\351\203\250\347\275\262.md" "b/docs/ \345\277\253\351\200\237\345\274\200\345\247\213/ \347\247\201\346\234\211\345\214\226\351\203\250\347\275\262/\345\216\237\347\224\237\351\203\250\347\275\262.md" new file mode 100644 index 000000000..2240c90f5 --- /dev/null +++ "b/docs/ \345\277\253\351\200\237\345\274\200\345\247\213/ \347\247\201\346\234\211\345\214\226\351\203\250\347\275\262/\345\216\237\347\224\237\351\203\250\347\275\262.md" @@ -0,0 +1,106 @@ +下载 + +```shell +打开 https://github.com/longguikeji/arkid/releases/tag/2.6.2 (手动检查最新版本,clone最新的版本tag) + +下载 arkid.zip 解压 +``` + + + +两台机器 + +## 一台后端: + +#### 1、软件安装 + +- python 3.8 + +- mysql 5.7 + +- redis 5 + +- ``` + gettext xmlsec1 supervisor tree + freetds-dev freetds-bin + python-dev python-pip + ``` + +#### 2、安装arkid后端 + +```shell +# 后端 be262.tar.gz 解压,放到 /var/arkid/ + +# 修改 settings_local.py,填写正确的 mysql 信息,mysql需要新建一个空的数据库 + +# 把 settings_local.py 和 supervisord.conf 放到 /var/arkid/ 下 + +``` + + + +#### 3、启动后端 + +```shell +# redis 和 mysql 需要保持启动状态 +# 进入/var/arkid/ 目录下 + +export PYTHONUSERBASE=/var/arkid/arkid_extensions +export PATH=$PATH:/var/arkid/arkid_extensions/bin +export ARKID_VERSION=2.6.2 + +pip install --disable-pip-version-check -r requirements.txt; + +/usr/local/bin/python3.8 manage.py migrate + +supervisord +``` + + + +## 一台前端: + +#### 1、软件安装 + +- nginx +#### 2、nginx配置文件 + +```shell +# 移掉默认配置 +mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf_back + +# 修改portal.conf文件,把 `http://be` 换成后端部署的地址 +# 将 portal.conf 放到 /etc/nginx/conf.d/portal.conf + + +``` + + + +#### 3、安装arkid前端和桌面 + +```shell +# 前端 fe262.tar.gz 解压,放到 /usr/share/nginx/html/ + +# 桌面 desktop.tar.gz 解压,放到 /usr/share/nginx/html/desktop/ + +``` + +#### 4、启动前端 + +```shell +nginx -t + +nginx -s reload +``` + +5、访问 + +```shell +http://前端机器ip +``` + + + + + From 606cf8dd89b51e6fb443c82b67d2ce0bdf465661 Mon Sep 17 00:00:00 2001 From: notevery Date: Mon, 17 Oct 2022 10:47:04 +0800 Subject: [PATCH 04/14] =?UTF-8?q?=E5=8E=9F=E7=94=9F=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...37\347\224\237\351\203\250\347\275\262.md" | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git "a/docs/ \345\277\253\351\200\237\345\274\200\345\247\213/ \347\247\201\346\234\211\345\214\226\351\203\250\347\275\262/\345\216\237\347\224\237\351\203\250\347\275\262.md" "b/docs/ \345\277\253\351\200\237\345\274\200\345\247\213/ \347\247\201\346\234\211\345\214\226\351\203\250\347\275\262/\345\216\237\347\224\237\351\203\250\347\275\262.md" index 2240c90f5..b549f998f 100644 --- "a/docs/ \345\277\253\351\200\237\345\274\200\345\247\213/ \347\247\201\346\234\211\345\214\226\351\203\250\347\275\262/\345\216\237\347\224\237\351\203\250\347\275\262.md" +++ "b/docs/ \345\277\253\351\200\237\345\274\200\345\247\213/ \347\247\201\346\234\211\345\214\226\351\203\250\347\275\262/\345\216\237\347\224\237\351\203\250\347\275\262.md" @@ -3,9 +3,17 @@ ```shell 打开 https://github.com/longguikeji/arkid/releases/tag/2.6.2 (手动检查最新版本,clone最新的版本tag) -下载 arkid.zip 解压 +下载 arkid.zip 解压,得到以下文件 ``` +- be262.tar.gz +- desktop266.tar.gz +- fe262.tar.gz +- portal.conf +- settings_local.py +- supervisord.conf +- 原生arkid部署.md + 两台机器 @@ -32,6 +40,20 @@ # 后端 be262.tar.gz 解压,放到 /var/arkid/ # 修改 settings_local.py,填写正确的 mysql 信息,mysql需要新建一个空的数据库 +DEBUG = False +# mysql database +MYSQLHOST = "localhost" +MYSQLPORT = "3306" +MYSQLDATABASE = "arkid" +MYSQLUSER = "root" +MYSQLPASSWORD = "root" + +# Redis cache, 默认端口 6379 +REDISHOST = "localhost" +REDISPASSWD = None + + + # 把 settings_local.py 和 supervisord.conf 放到 /var/arkid/ 下 From 77973ac110029ed08088c723a5c787d181fb3676 Mon Sep 17 00:00:00 2001 From: notevery Date: Mon, 17 Oct 2022 15:38:52 +0800 Subject: [PATCH 05/14] =?UTF-8?q?k8s=E9=83=A8=E7=BD=B2=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...350\277\207k8s\351\203\250\347\275\262.md" | 37 ++++++++----------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git "a/docs/ \345\277\253\351\200\237\345\274\200\345\247\213/ \347\247\201\346\234\211\345\214\226\351\203\250\347\275\262/\351\200\232\350\277\207k8s\351\203\250\347\275\262.md" "b/docs/ \345\277\253\351\200\237\345\274\200\345\247\213/ \347\247\201\346\234\211\345\214\226\351\203\250\347\275\262/\351\200\232\350\277\207k8s\351\203\250\347\275\262.md" index 4a135cf9d..3843df1e4 100644 --- "a/docs/ \345\277\253\351\200\237\345\274\200\345\247\213/ \347\247\201\346\234\211\345\214\226\351\203\250\347\275\262/\351\200\232\350\277\207k8s\351\203\250\347\275\262.md" +++ "b/docs/ \345\277\253\351\200\237\345\274\200\345\247\213/ \347\247\201\346\234\211\345\214\226\351\203\250\347\275\262/\351\200\232\350\277\207k8s\351\203\250\347\275\262.md" @@ -8,31 +8,26 @@ * PV provisioner support in the underlying infrastructure * ReadWriteMany volumes for deployment scaling -## 通过helm安装 +## 通过helm-controller安装 -> !!! 生产环境推荐使用 gitops工具(如argoCD)来部署和管理 -> chart源码仓库地址: https://github.com/longguikeji/arkid-charts.git - -### 添加helm仓库 +### 安装 CRD ```shell -helm repo add lgkj https://harbor.longguikeji.com/chartrepo/public - -helm repo update +CHARTCRD=`kubectl get crd|grep helmcharts.helm.cattle.io` +if [ -z "$CHARTCRD" ];then + kubectl create -f https://gitee.com/longguikeji/arkid-charts/raw/main/helmchartscrd.yaml +fi ``` -### helm 查找 arkid 的 charts +### 部署 arkid ```shell -helm search repo arkid -l +kubectl create ns arkid +kubectl create -f https://gitee.com/longguikeji/arkid-charts/raw/main/arkid.yaml ``` -### 安装 arkid chart - - +### 卸载 arkid ```shell -kubectl create ns arkid +kubectl -n arkid delete helmcharts arkid -helm --namespace arkid install arkid lgkj/arkid \ ---set persistence.init=true ``` ## nodeport 端口访问 arkid @@ -52,14 +47,14 @@ helm --namespace arkid install arkid lgkj/arkid \ ## 升级 arkid chart版本 ```shell -helm repo update +kubectl -n arkid edit helmcharts arkid -helm -n arkid upgrade arkid lgkj/arkid \ ---set persistence.init=true +## 修改版本号,保存退出, 会自动更新 +spec: + chart: arkid + version: 3.1.3 ``` - - ## 更多配置 > https://github.com/longguikeji/arkid-charts.git ### 公共配置 From 713db6e8603db038b9a36c37edca54ef78186905 Mon Sep 17 00:00:00 2001 From: inji-hanbin Date: Mon, 17 Oct 2022 17:17:03 +0800 Subject: [PATCH 06/14] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20=E5=A2=9E=E5=BC=BA?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=AA=8C=E8=AF=81=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?case=EF=BC=8C=E4=BF=AE=E7=90=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1/views/permission.py | 8 +- api/v1/views/permission_group.py | 27 +++-- api/v1/views/user.py | 8 +- arkid/core/error.py | 3 +- arkid/core/perm/permission_data.py | 70 ++++++++++++ .../com_longgui_app_protocol_oidc/Case.md | 105 ++++++++++++++++++ 6 files changed, 205 insertions(+), 16 deletions(-) diff --git a/api/v1/views/permission.py b/api/v1/views/permission.py index 05a4ec245..020674b7f 100644 --- a/api/v1/views/permission.py +++ b/api/v1/views/permission.py @@ -496,7 +496,9 @@ def permission_toggle_open(request, tenant_id: str, permission_id: str): if permission and permission.tenant is None: return ErrorDict(ErrorCode.SYSTEM_PERMISSION_NOT_OPERATION) if permission is None: - permission = Permission.valid_objects.filter(tenant_id=tenant_id, id=permission_id).first() + permission = Permission.valid_objects.filter(id=permission_id).first() + if str(permission.tenant_id) != tenant_id: + return ErrorDict(ErrorCode.PERMISSION_NOT_BELONG_TO_TENANT) if permission: is_open = permission.is_open if is_open: @@ -571,7 +573,9 @@ def permission_toggle_other_user_open(request, tenant_id: str, permission_id: st if permission and permission.tenant is None: return ErrorDict(ErrorCode.SYSTEM_PERMISSION_NOT_OPERATION) if permission is None: - permission = Permission.valid_objects.filter(tenant_id=tenant_id, id=permission_id).first() + permission = Permission.valid_objects.filter(id=permission_id).first() + if str(permission.tenant_id) != tenant_id: + return ErrorDict(ErrorCode.PERMISSION_NOT_BELONG_TO_TENANT) if permission: is_open_other_user = permission.is_open_other_user if is_open_other_user: diff --git a/api/v1/views/permission_group.py b/api/v1/views/permission_group.py index f7f9b88ac..ce4661ec2 100644 --- a/api/v1/views/permission_group.py +++ b/api/v1/views/permission_group.py @@ -134,6 +134,7 @@ def delete_permission_group(request, tenant_id: str, id: str): def get_permissions_from_group(request, tenant_id: str, permission_group_id: str, category: str = None, operation_id: str = None): """ 获取当前分组的权限列表 """ + from arkid.core.perm.permission_data import PermissionData if permission_group_id != 'arkid': permission = SystemPermission.valid_objects.filter(id=permission_group_id).first() if permission is None: @@ -151,15 +152,6 @@ def get_permissions_from_group(request, tenant_id: str, permission_group_id: str app = App.valid_objects.filter(id=permission_group_id).first() items = [] if app: - if app.entry_permission: - if category and category in app.entry_permission.category: - category = category.strip() - items.append(app.entry_permission) - elif operation_id and operation_id in app.entry_permission.operation_id: - operation_id = operation_id.strip() - items.append(app.entry_permission) - else: - items.append(app.entry_permission) app_permission_ids = [] base_permissions = Permission.valid_objects.filter( app_id=app.id, @@ -187,10 +179,25 @@ def get_permissions_from_group(request, tenant_id: str, permission_group_id: str operation_id = operation_id.strip() group_permission_details = group_permission_details.filter(operation_id__icontains=operation_id) items.extend(group_permission_details) + entry_permission = None + if app.entry_permission: + if category and category in app.entry_permission.category: + category = category.strip() + entry_permission = app.entry_permission + elif operation_id and operation_id in app.entry_permission.operation_id: + operation_id = operation_id.strip() + entry_permission = app.entry_permission + else: + entry_permission = app.entry_permission + # 需要过滤展示 + permissiondata = PermissionData() + items = permissiondata.get_permissions_by_app_filter(tenant_id, app.id, items, entry_permission, request.user) return items else: permissions = SystemPermission.valid_objects.filter(category='group', is_system=True) - return permissions + # 只能看到自己拥有的权限 + permissiondata = PermissionData() + return permissiondata.get_system_permission_by_filter(tenant_id, permissions, request.user) # tenant = request.tenant # if tenant.is_platform_tenant: # permission = get_object_or_404(SystemPermission, id=permission_group_id, is_del=False) diff --git a/api/v1/views/user.py b/api/v1/views/user.py index f6365b4ab..d005f3fe7 100644 --- a/api/v1/views/user.py +++ b/api/v1/views/user.py @@ -62,14 +62,14 @@ def user_list_no_super(request, tenant_id: str): @api.post("/tenant/{tenant_id}/users/",response=UserCreateOut, tags=['用户']) @operation(UserCreateOut,roles=[TENANT_ADMIN, PLATFORM_ADMIN]) def user_create(request, tenant_id: str,data:UserCreateIn): - + tenant = request.tenant # user = User.expand_objects.create(tenant=request.tenant,**data.dict()) - if User.objects.filter(tenant=request.tenant, username=data.username).count(): + if User.objects.filter(tenant=tenant, username=data.username).count(): return ErrorDict( ErrorCode.USERNAME_EXISTS_ERROR ) - user = User.objects.create(tenant=request.tenant, username=data.username) + user = User.objects.create(tenant=tenant, username=data.username) for key,value in data.dict().items(): if key=='username': continue @@ -77,6 +77,8 @@ def user_create(request, tenant_id: str,data:UserCreateIn): setattr(user,key,value) user.save() + tenant.users.add(user) + tenant.save() return {"data":{"user":user.id.hex}} @api.get("/tenant/{tenant_id}/users/pull/",response=List[UserPullItemOut], tags=['用户']) diff --git a/arkid/core/error.py b/arkid/core/error.py index 941f2779c..a07ea489e 100644 --- a/arkid/core/error.py +++ b/arkid/core/error.py @@ -49,7 +49,8 @@ class ErrorCode(Enum): BAN_REMOVE_GROUP_SCOPE = ('10036', _('ban remove group permission', '该分组范围不允许移除')) PERMISSION_GROUP_NOT_EDIT = ('10037', _('the permission group not edit', '该分组权限不允许编辑')) PERMISSION_GROUP_NOT_DELETE = ('10038', _('the permission group not delete', '该分组权限不允许删除')) - SYSTEM_PERMISSION_NOT_OPERATION = ('10033', _('system permission not operation', '系统权限不支持此操作')) + SYSTEM_PERMISSION_NOT_OPERATION = ('10039', _('system permission not operation', '系统权限不支持此操作')) + PERMISSION_NOT_BELONG_TO_TENANT = ('10040', _('permission not belong to tenant', '该应用不属于该租户')) # SMS_PROVIDER_IS_MISSING = '11001' # AUTHCODE_PROVIDER_IS_MISSING = '11002' diff --git a/arkid/core/perm/permission_data.py b/arkid/core/perm/permission_data.py index 9272d70d2..3a8a275e0 100644 --- a/arkid/core/perm/permission_data.py +++ b/arkid/core/perm/permission_data.py @@ -1495,6 +1495,76 @@ def get_app_permissions_by_search(self, tenant_id, app_id, category = None, oper result.extend(list(result_items.order_by('sort_id'))) return result + + def get_system_permission_by_filter(self, tenant_id, items, login_user): + ''' + 根据已有的系统权限,作过滤 + ''' + sort_ids = [] + result = [] + compress = Compress() + for item in items: + sort_ids.append(item.sort_id) + userpermissionresult = UserPermissionResult.valid_objects.filter( + app=None, + user=login_user, + tenant_id=tenant_id + ).first() + permission_sort_ids = [] + if userpermissionresult: + permission_result = compress.decrypt(userpermissionresult.result) + permission_result_arr = list(permission_result) + for index, item in enumerate(permission_result_arr): + if int(item) == 1 and index in sort_ids: + permission_sort_ids.append(index) + for item in items: + if item.sort_id in permission_sort_ids: + result.append(item) + return result + + + def get_permissions_by_app_filter(self, tenant_id, app_id, items, entry_permission, login_user): + ''' + 根据已经有的应用权限,作过滤 + ''' + sort_ids = [] + result = [] + compress = Compress() + for item in items: + sort_ids.append(item.sort_id) + if sort_ids: + # 只展示为1的应用权限 + userpermissionresult = UserPermissionResult.valid_objects.filter( + app_id=app_id, + user=login_user, + tenant_id=tenant_id + ).first() + permission_sort_ids = [] + if userpermissionresult: + permission_result = compress.decrypt(userpermissionresult.result) + permission_result_arr = list(permission_result) + for index, item in enumerate(permission_result_arr): + if int(item) == 1 and index in sort_ids: + permission_sort_ids.append(index) + for item in items: + if item.sort_id in permission_sort_ids: + result.append(item) + # 只展示为1的系统权限 + if entry_permission: + userpermissionresult = UserPermissionResult.valid_objects.filter( + app=None, + user=login_user, + tenant_id=tenant_id + ).first() + permission_sort_ids = [] + if userpermissionresult: + permission_result = compress.decrypt(userpermissionresult.result) + permission_result_arr = list(permission_result) + for index, item in enumerate(permission_result_arr): + if int(item) == 1 and index == entry_permission.sort_id: + result.insert(0, entry_permission) + return result + def get_permissions_by_search(self, tenant_id, app_id, user_id, group_id, login_user, parent_id=None, is_only_show_group=False, app_name=None, category=None, operation_id=None): ''' diff --git a/extension_root/com_longgui_app_protocol_oidc/Case.md b/extension_root/com_longgui_app_protocol_oidc/Case.md index 67e90c8ff..0d77dba84 100644 --- a/extension_root/com_longgui_app_protocol_oidc/Case.md +++ b/extension_root/com_longgui_app_protocol_oidc/Case.md @@ -232,4 +232,109 @@ public class OidcRedirectServlet extends HttpServlet { return null; } } +``` + +## .NET + +``` C# +public partial class AutoLogin_Qywx3 : System.Web.UI.Page +{ + string clientId = "----------------------------------";//新建一个应用,提供如下信息 + string clientSecret = "---------------------"; + string myurl = "--------------------------; + string URL_Authorize = "--------------------oauth/authorize/"; + string URL_Token = "---------------------------/oauth/token/"; + string URL_Userinfo = "------------------------/oauth/userinfo/";//用户信息地址 + + protected void Page_Load(object sender, EventArgs e) + { + string code = Request.QueryString["code"]; + if (string.IsNullOrEmpty(code)) + { + //请求code + string return_url = Server.UrlEncode(myurl); + string url = ""; + url = URL_Authorize + "?client_id=" + clientId + "&redirect_uri=" + return_url + "&response_type=code&scope=userinfo"; + Response.Redirect(url); + return; + } + else + { + string json = sendMessage(URL_Token, code); + DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(AccessToken)); + var mStream = new MemoryStream(Encoding.Default.GetBytes(json)); + AccessToken token = (AccessToken)serializer.ReadObject(mStream); + string access_token=token.access_token; +string url = "----------------/oauth/userinfo/"; //用户信息地址 + string R = SendGetHttpRequest(url, access_token); + Response.Write(R); + return; + } + } + + public string SendGetHttpRequest(string url, string requestData) + { + WebRequest request = (WebRequest)HttpWebRequest.Create(url); + request.Method = "Get"; + request.Headers["Authorization"] = "Bearer " + requestData; + string result = string.Empty; + using (WebResponse response = request.GetResponse()) + { + if (response != null) + { + using (Stream stream = response.GetResponseStream()) + { + using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) + { + result = reader.ReadToEnd(); + } + } + + } + } + return result; + } + + public string sendMessage(string strUrl, string code) + { + ServicePointManager.Expect100Continue = true; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; + ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true; + //1.设置消息头 + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUrl); + request.Method = "Post"; + string a = clientId + ":" + clientSecret; + var b = Encoding.UTF8.GetBytes(a); + var base64 = Convert.ToBase64String(b); + request.Headers.Add("Authorization", "Basic " + base64); + request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)"; + request.ContentType = "application/x-www-form-urlencoded"; + request.Accept = "*/*"; + request.Host = "-------";//sso域名及端口 + request.AllowAutoRedirect = true; + request.Headers.Add("accept-encoding", "gzip, deflate, br"); + string param = "grant_type=authorization_code&code=" + HttpUtility.UrlEncode(code); + byte[] byteData = Encoding.ASCII.GetBytes(param); + request.ContentLength = byteData.Length; + + using (Stream reqStream = request.GetRequestStream()) + { + reqStream.Write(byteData, 0, byteData.Length); + } + //Response应答流获取数据 + string strResponse = ""; + using (HttpWebResponse res = (HttpWebResponse)request.GetResponse()) + { + using (Stream resStream = res.GetResponseStream()) + { + using (StreamReader sr = new StreamReader(resStream, Encoding.UTF8)) //UTF8 + { + strResponse = sr.ReadToEnd(); + } + } + // res.Close(); + } + return strResponse; + } +} ``` \ No newline at end of file From 4d9d517aa7ae7aaf452c006a69da9e2ee852c6da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=98=E5=B0=8F=E8=A5=BF?= Date: Tue, 18 Oct 2022 17:05:39 +0800 Subject: [PATCH 07/14] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20=E5=88=9B=E5=BB=BA?= =?UTF-8?q?slug=E6=B7=BB=E5=8A=A0=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1/schema/tenant.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/api/v1/schema/tenant.py b/api/v1/schema/tenant.py index f18ea9af0..6cfa7fcaf 100644 --- a/api/v1/schema/tenant.py +++ b/api/v1/schema/tenant.py @@ -39,6 +39,13 @@ class TenantOut(ResponseSchema): data: TenantItemOut class TenantCreateIn(ModelSchema): + + slug:str = Field( + title=_("短链接标识"), + format="^[a-z0-9]{1,24}$", + feedback=_("输入错误,必须为24位以内数字和小写字母的组合") + ) + class Config: model = Tenant model_fields = ["name","slug","icon"] From f4a9eddcdc1722c880d7bb1270652ac3b8a1f9b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=98=E5=B0=8F=E8=A5=BF?= Date: Tue, 18 Oct 2022 17:08:21 +0800 Subject: [PATCH 08/14] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20=E5=88=9B=E5=BB=BA?= =?UTF-8?q?slug=E6=A0=A1=E9=AA=8C=E4=BF=A1=E6=81=AF=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1/schema/tenant.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/v1/schema/tenant.py b/api/v1/schema/tenant.py index 6cfa7fcaf..c963f7e1d 100644 --- a/api/v1/schema/tenant.py +++ b/api/v1/schema/tenant.py @@ -43,7 +43,7 @@ class TenantCreateIn(ModelSchema): slug:str = Field( title=_("短链接标识"), format="^[a-z0-9]{1,24}$", - feedback=_("输入错误,必须为24位以内数字和小写字母的组合") + feedback=_("输入错误,必须为24位以内数字和小写字母的组合") ) class Config: From d1d43fcda3a6205724786de3b7e89c4ee142c8c6 Mon Sep 17 00:00:00 2001 From: luolu-lg Date: Tue, 18 Oct 2022 23:18:37 +0800 Subject: [PATCH 09/14] =?UTF-8?q?fix:=20=F0=9F=90=9B=20=E8=AF=95=E7=94=A8?= =?UTF-8?q?=E6=88=96=E8=B4=AD=E4=B9=B0=E6=8F=92=E4=BB=B6=E5=90=8E=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E5=AE=89=E8=A3=85=E6=8F=92=E4=BB=B6=20(#1360)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1/pages/app_manage/app_list.py | 2 +- api/v1/pages/extension_manage/extension_admin.py | 2 +- api/v1/views/arkstore.py | 9 +++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/api/v1/pages/app_manage/app_list.py b/api/v1/pages/app_manage/app_list.py index 7ad44a108..94ac778ee 100644 --- a/api/v1/pages/app_manage/app_list.py +++ b/api/v1/pages/app_manage/app_list.py @@ -341,7 +341,7 @@ global_actions={ 'next': actions.NextAction( name="已支付", - path="/api/v1/tenant/{tenant_id}/arkstore/purchase/order/{order_no}/payment_status/", + path="/api/v1/tenant/{tenant_id}/arkstore/purchase/order/{order_no}/payment_status/extensions/{uuid}/", method=actions.FrontActionMethod.GET ), } diff --git a/api/v1/pages/extension_manage/extension_admin.py b/api/v1/pages/extension_manage/extension_admin.py index 294f6c7fb..7164895c4 100644 --- a/api/v1/pages/extension_manage/extension_admin.py +++ b/api/v1/pages/extension_manage/extension_admin.py @@ -315,7 +315,7 @@ global_actions={ 'next': actions.NextAction( name="已支付", - path="/api/v1/tenant/{tenant_id}/arkstore/purchase/order/{order_no}/payment_status/", + path="/api/v1/tenant/{tenant_id}/arkstore/purchase/order/{order_no}/payment_status/extensions/{uuid}/", method=actions.FrontActionMethod.GET ), } diff --git a/api/v1/views/arkstore.py b/api/v1/views/arkstore.py index f8150005a..a6399cb21 100644 --- a/api/v1/views/arkstore.py +++ b/api/v1/views/arkstore.py @@ -438,13 +438,13 @@ def get_order_payment_arkstore_extension(request, tenant_id: str, order_no: str) return {'data': resp} -@api.get("/tenant/{tenant_id}/arkstore/purchase/order/{order_no}/payment_status/", tags=['方舟商店'], +@api.get("/tenant/{tenant_id}/arkstore/purchase/order/{order_no}/payment_status/extensions/{uuid}/", tags=['方舟商店'], response={ 200: PaymentStatus, 202: ResponseSchema, }) @operation(roles=[TENANT_ADMIN, PLATFORM_ADMIN]) -def get_order_payment_status_arkstore_extension(request, tenant_id: str, order_no: str): +def get_order_payment_status_arkstore_extension(request, tenant_id: str, order_no: str, uuid: str): token = request.user.auth_token tenant = Tenant.objects.get(id=tenant_id) access_token = get_arkstore_access_token(tenant, token) @@ -452,6 +452,9 @@ def get_order_payment_status_arkstore_extension(request, tenant_id: str, order_n if resp.get('code') == '0' and not resp.get('appid'): return 202, {'data': resp} else: + # install extension + if resp.get('trade_state') == 'SUCCESS': + install_arkstore_extension(tenant, token, uuid) return 200, resp @@ -578,6 +581,8 @@ def create_order_arkstore_extension_trial(request, tenant_id: str, uuid: str): resp = trial_arkstore_extension(access_token, uuid) if resp.get('code') == '10003': return ErrorDict(ErrorCode.TRIAL_EXTENSION_TWICE) + # install extension + install_arkstore_extension(tenant, token, uuid) return {'data': resp} From 39d9fff86cad032da67179c46bc339295ed5864e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=98=E5=B0=8F=E8=A5=BF?= Date: Thu, 20 Oct 2022 08:44:27 +0800 Subject: [PATCH 10/14] =?UTF-8?q?fix:=20=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E8=AF=AD=E8=A8=80=E5=8C=85=E6=9C=AA=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E5=8A=A0=E8=BD=BD=E9=BB=98=E8=AE=A4=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- arkid/core/translation.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arkid/core/translation.py b/arkid/core/translation.py index af8f28e77..415e5119f 100644 --- a/arkid/core/translation.py +++ b/arkid/core/translation.py @@ -61,5 +61,10 @@ def reset_lang_maps(): lang_maps[item.name].update(item.custom_data) except Exception as err: logger.error(err) + + for key in default_lang_maps.keys(): + if key not in lang_maps.keys(): + lang_maps[key] = default_lang_maps[key] + return lang_maps From d8117b84c56db44e1f674be9957a9585cdc05cb4 Mon Sep 17 00:00:00 2001 From: luolu-lg Date: Thu, 20 Oct 2022 11:41:52 +0800 Subject: [PATCH 11/14] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=87=8D=E5=90=AFCelery=E5=8A=9F=E8=83=BD=20(#1359)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 🎸 添加重启Celery功能 --- api/v1/views/extension.py | 3 ++- arkid/common/arkstore.py | 3 ++- arkid/core/tasks/celery.py | 15 +++++++++++++++ arkid/extension/utils.py | 13 +++++++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/api/v1/views/extension.py b/api/v1/views/extension.py index c327f01fc..ac8cd5ce9 100644 --- a/api/v1/views/extension.py +++ b/api/v1/views/extension.py @@ -10,7 +10,7 @@ from arkid.core.constants import NORMAL_USER, PLATFORM_ADMIN, TENANT_ADMIN from arkid.core.extension import Extension from arkid.core.schema import ResponseSchema -from arkid.extension.utils import import_extension +from arkid.extension.utils import import_extension, restart_celery from arkid.extension.models import TenantExtensionConfig, Extension as ExtensionModel from arkid.core.error import ErrorCode, ErrorDict from ninja.pagination import paginate @@ -230,6 +230,7 @@ def toggle_extension_active_status(request, id: str): extension.is_active = True extension.save() + restart_celery() return ErrorDict(ErrorCode.OK) @api.post("/extensions/{id}/use_platform_config/toggle/", tags=["平台插件"]) diff --git a/arkid/common/arkstore.py b/arkid/common/arkstore.py index 0b2036dd1..ca0d2755f 100644 --- a/arkid/common/arkstore.py +++ b/arkid/common/arkstore.py @@ -13,7 +13,7 @@ from django.db import transaction from arkid.core.models import Tenant from arkid.extension.models import TenantExtension, Extension -from arkid.extension.utils import import_extension, unload_extension, load_extension_apps +from arkid.extension.utils import import_extension, unload_extension, load_extension_apps, restart_celery from pathlib import Path from arkid.common.logger import logger @@ -363,6 +363,7 @@ def download_arkstore_extension(tenant, token, extension_id, extension_detail): logger.exception(f'load download extension: {ext_package} failed: {str(e)}') return {'success': 'failed'} + restart_celery() return {'success': 'true'} diff --git a/arkid/core/tasks/celery.py b/arkid/core/tasks/celery.py index a598416ec..697b40532 100644 --- a/arkid/core/tasks/celery.py +++ b/arkid/core/tasks/celery.py @@ -54,3 +54,18 @@ def dispatch_task(self, task_name, *args, **kwargs): break else: logger.info(f"*** Warning! No task found for name {task_name} ***") + + +@app.task(bind=True) +def dispatch_task_with_options(self, task_name, celery_options={}, *args, **kwargs): + # logger.info(f'=== Dispatch task:{task_name}, args: {args}, kwargs: {kwargs}, celery_options: {celery_options}') + for name, task in app.tasks.items(): + func_name = name.split('.')[-1] + if func_name == task_name: + if not celery_options or not isinstance(celery_options, dict): + celery_options = {} + logger.info(f"Ready to apply_async funtion {name} with {celery_options}") + task.apply_async(args, kwargs, **celery_options) + break + else: + logger.info(f"*** Warning! No task found for name {task_name} ***") \ No newline at end of file diff --git a/arkid/extension/utils.py b/arkid/extension/utils.py index 60a977c7a..7a7fd9598 100644 --- a/arkid/extension/utils.py +++ b/arkid/extension/utils.py @@ -172,3 +172,16 @@ def reload_extension(ext_dir: str) -> None: # 重新加载相应的url reload(api.v1.urls) reload(arkid.urls) + + +def restart_celery(): + from django.core.cache import cache + key = "CELERY_RESTART" + value = True + timeout = 60*10 + if cache.get(key): + return + + cache.set(key, value, timeout=timeout) + from arkid.core.tasks.celery import dispatch_task_with_options + dispatch_task_with_options.delay('restart', celery_options={"countdown": timeout}) From 7d3227585bb0e9104567dae736951c62f9610bed Mon Sep 17 00:00:00 2001 From: luolu-lg Date: Thu, 20 Oct 2022 17:23:51 +0800 Subject: [PATCH 12/14] Feature arkstore api (#1362) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 🐛 修改已安装接口,添加未和安装有升级接口 --- api/v1/views/arkstore.py | 38 +++++++++++++++++-- api/v1/views/extension.py | 6 ++- arkid/core/pagenation.py | 30 +++++++++++++++ arkid/extension/loader.py | 3 ++ ...uthor_extension_homepage_extension_logo.py | 28 ++++++++++++++ ...uthor_alter_extension_homepage_and_more.py | 28 ++++++++++++++ arkid/extension/models.py | 3 ++ 7 files changed, 131 insertions(+), 5 deletions(-) create mode 100644 arkid/extension/migrations/0011_extension_author_extension_homepage_extension_logo.py create mode 100644 arkid/extension/migrations/0012_alter_extension_author_alter_extension_homepage_and_more.py diff --git a/api/v1/views/arkstore.py b/api/v1/views/arkstore.py index a6399cb21..072cc3da1 100644 --- a/api/v1/views/arkstore.py +++ b/api/v1/views/arkstore.py @@ -40,7 +40,7 @@ import enum from pydantic import Field from ninja.pagination import paginate -from arkid.core.pagenation import CustomPagination, ArstorePagination +from arkid.core.pagenation import CustomPagination, ArstorePagination, ArstoreExtensionPagination from arkid.extension.models import Extension, TenantExtension, ArkStoreCategory from arkid.core.translation import gettext_default as _ from pydantic import condecimal, conint @@ -138,6 +138,8 @@ class OnShelveExtensionPurchaseOut(ArkstoreExtensionItemSchemaOut): purchase_useful_life: Optional[List[str]] = Field( title=_('Purchase Useful Life', '有效期') ) + install: Optional[bool] = Field(title=_("Install", "安装"), default=False, hidden=True) + upgrade: Optional[bool] = Field(title=_("Upgrade", "升级"), default=False, hidden=True) class OrderStatusSchema(Schema): @@ -275,7 +277,7 @@ class ArkstoreAppQueryIn(Schema): @api.get("/tenant/{tenant_id}/arkstore/extensions/", tags=['方舟商店'], response=List[OnShelveExtensionPurchaseOut]) @operation(List[ArkstoreItemSchemaOut], roles=[TENANT_ADMIN, PLATFORM_ADMIN]) -@paginate(ArstorePagination) +@paginate(ArstoreExtensionPagination) def list_arkstore_extensions(request, tenant_id: str, query_data: ArkstoreExtensionQueryIn=Query(...)): query_data = query_data.dict() return get_arkstore_list(request, None, 'extension', extra_params=query_data) @@ -376,7 +378,7 @@ def get_arkstore_category_http(): @api.get("/tenant/{tenant_id}/arkstore/purchased/extensions/", tags=['方舟商店'], response=List[OnShelveExtensionPurchaseOut]) @operation(List[ArkstoreItemSchemaOut], roles=[TENANT_ADMIN, PLATFORM_ADMIN]) -@paginate(ArstorePagination) +@paginate(ArstoreExtensionPagination) def list_arkstore_purchased_extensions(request, tenant_id: str, category_id: str = None): extra_params = {} if category_id and category_id != "" and category_id != "0": @@ -384,6 +386,36 @@ def list_arkstore_purchased_extensions(request, tenant_id: str, category_id: str return get_arkstore_list(request, True, 'extension', extra_params=extra_params) +@api.get("/tenant/{tenant_id}/arkstore/not_installed/extensions/", tags=['方舟商店'], response=List[OnShelveExtensionPurchaseOut]) +@operation(List[ArkstoreItemSchemaOut], roles=[TENANT_ADMIN, PLATFORM_ADMIN]) +@paginate(CustomPagination) +def list_arkstore_not_installed_extensions(request, tenant_id: str, category_id: str = None): + extra_params = {} + if category_id and category_id != "" and category_id != "0": + extra_params['category_id'] = category_id + installed_exts = Extension.valid_objects.filter() + installed_ext_packages = set(str(ext.package) for ext in installed_exts) + purchased_exts = get_arkstore_list(request, True, 'extension', all=True, extra_params=extra_params)['items'] + return [ext for ext in purchased_exts if ext['package'] not in installed_ext_packages] + + +@api.get("/tenant/{tenant_id}/arkstore/not_upgraded/extensions/", tags=['方舟商店'], response=List[OnShelveExtensionPurchaseOut]) +@operation(List[ArkstoreItemSchemaOut], roles=[TENANT_ADMIN, PLATFORM_ADMIN]) +@paginate(CustomPagination) +def list_arkstore_not_upgraded_extensions(request, tenant_id: str, category_id: str = None): + extra_params = {} + if category_id and category_id != "" and category_id != "0": + extra_params['category_id'] = category_id + installed_exts = Extension.valid_objects.filter() + installed_ext_packages = {ext.package: ext for ext in installed_exts} + purchased_exts = get_arkstore_list(request, True, 'extension', all=True, extra_params=extra_params)['items'] + exts = [] + for ext in purchased_exts: + if ext['package'] in installed_ext_packages and installed_ext_packages[ext['package']].version < ext['version']: + exts.append(ext) + return exts + + @api.get("/tenant/{tenant_id}/arkstore/purchased/apps/", tags=['方舟商店'], response=List[ArkstoreAppItemSchemaOut]) @operation(List[ArkstoreItemSchemaOut], roles=[TENANT_ADMIN, PLATFORM_ADMIN]) @paginate(CustomPagination) diff --git a/api/v1/views/extension.py b/api/v1/views/extension.py index ac8cd5ce9..1a40b0913 100644 --- a/api/v1/views/extension.py +++ b/api/v1/views/extension.py @@ -74,8 +74,10 @@ class ExtensionListOut(ModelSchema): class Config: model= ExtensionModel - model_fields=["id","name","type","package","labels","version","is_active","is_allow_use_platform_config"] - + model_fields=["id","name","type","package","labels","version","is_active","is_allow_use_platform_config", + "author", "logo", "homepage" + ] + labels:Optional[List[str]] is_active: bool = Field( title='是否启动', diff --git a/arkid/core/pagenation.py b/arkid/core/pagenation.py index 3c777ab15..2a69174c6 100644 --- a/arkid/core/pagenation.py +++ b/arkid/core/pagenation.py @@ -59,3 +59,33 @@ def paginate_queryset(self, queryset, pagination: CustomPagination.Input, reques "previous": f"{request.path}?page={page-1}&page_size={page_size}" if page > 2 else "", "next": f"{request.path}?page={page+1}&page_size={page_size}" if page * page_size < len(list(queryset)) else "" } + + +class ArstoreExtensionPagination(CustomPagination): + def paginate_queryset(self, queryset, pagination: CustomPagination.Input, request, **params): + + if isinstance(queryset,dict) and "error" in queryset.keys() and queryset.get("error") not in ["0",0]: + queryset["items"] = [] + return queryset + + page = pagination.page + page_size = pagination.page_size + items = queryset["items"] + count = queryset["count"] + + from arkid.extension.models import Extension + installed_exts = Extension.valid_objects.filter() + installed_ext_packages = {ext.package: ext for ext in installed_exts} + for ext in items: + if ext['package'] in installed_ext_packages: + if installed_ext_packages[ext['package']].version < ext['version']: + ext['upgrade'] = True + else: + ext['install'] = True + + return { + 'items': items, + 'count': count, + "previous": f"{request.path}?page={page-1}&page_size={page_size}" if page > 2 else "", + "next": f"{request.path}?page={page+1}&page_size={page_size}" if page * page_size < len(list(queryset)) else "" + } diff --git a/arkid/extension/loader.py b/arkid/extension/loader.py index 707200d0e..9dca0723e 100644 --- a/arkid/extension/loader.py +++ b/arkid/extension/loader.py @@ -36,6 +36,9 @@ def _start(self): 'ext_dir': str(ext.ext_dir), 'name': ext.name, 'version': ext.version, + 'author': ext.author, + 'homepage': ext.homepage, + 'logo': ext.logo, 'is_del': False, }, package = ext.package, diff --git a/arkid/extension/migrations/0011_extension_author_extension_homepage_extension_logo.py b/arkid/extension/migrations/0011_extension_author_extension_homepage_extension_logo.py new file mode 100644 index 000000000..daa830b32 --- /dev/null +++ b/arkid/extension/migrations/0011_extension_author_extension_homepage_extension_logo.py @@ -0,0 +1,28 @@ +# Generated by Django 4.0.6 on 2022-10-20 06:27 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('extension', '0010_arkstorecategory'), + ] + + operations = [ + migrations.AddField( + model_name='extension', + name='author', + field=models.CharField(blank=True, default='', max_length=128, null=True), + ), + migrations.AddField( + model_name='extension', + name='homepage', + field=models.CharField(blank=True, default='', max_length=1024, null=True), + ), + migrations.AddField( + model_name='extension', + name='logo', + field=models.CharField(blank=True, default='', max_length=1024, null=True), + ), + ] diff --git a/arkid/extension/migrations/0012_alter_extension_author_alter_extension_homepage_and_more.py b/arkid/extension/migrations/0012_alter_extension_author_alter_extension_homepage_and_more.py new file mode 100644 index 000000000..4dee07cf4 --- /dev/null +++ b/arkid/extension/migrations/0012_alter_extension_author_alter_extension_homepage_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 4.0.6 on 2022-10-20 06:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('extension', '0011_extension_author_extension_homepage_extension_logo'), + ] + + operations = [ + migrations.AlterField( + model_name='extension', + name='author', + field=models.CharField(blank=True, default='', max_length=128, null=True, verbose_name='Author'), + ), + migrations.AlterField( + model_name='extension', + name='homepage', + field=models.CharField(blank=True, default='', max_length=1024, null=True, verbose_name='Homepage'), + ), + migrations.AlterField( + model_name='extension', + name='logo', + field=models.CharField(blank=True, default='', max_length=1024, null=True, verbose_name='Logo'), + ), + ] diff --git a/arkid/extension/models.py b/arkid/extension/models.py index 86e4d4f7f..fbc6865f6 100644 --- a/arkid/extension/models.py +++ b/arkid/extension/models.py @@ -16,6 +16,9 @@ class Meta(object): ext_dir = models.CharField(max_length=1024, verbose_name=_('完整路径名')) name = models.CharField(max_length=128, verbose_name=_('名称')) version = models.CharField(max_length=128, verbose_name=_('版本')) + author = models.CharField(max_length=128, blank=True, null=True, default="", verbose_name=_('Author', '作者')) + logo = models.CharField(max_length=1024, blank=True, null=True, default="", verbose_name=_('Logo', '图标')) + homepage = models.CharField(max_length=1024, blank=True, null=True, default="", verbose_name=_('Homepage', '官方网站')) is_active = models.BooleanField(default=True, verbose_name=_('是否启动')) profile = models.JSONField(blank=True, default=dict, verbose_name=_('Setup Profile','启动设置')) is_allow_use_platform_config = models.BooleanField(default=False, verbose_name=_('是否允许租户使用平台配置')) From 5fb8275d0c42fd9033384c347476d866d392972b Mon Sep 17 00:00:00 2001 From: inji-hanbin Date: Fri, 21 Oct 2022 10:03:42 +0800 Subject: [PATCH 13/14] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20=E8=B4=A6=E5=AF=86?= =?UTF-8?q?=E4=BB=A3=E5=A1=AB=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com_longgui_auto_form_fill/__init__.py | 216 ++++++++++++++++++ .../com_longgui_auto_form_fill/apps.py | 7 + .../arkid_chrome_extension.zip | Bin 0 -> 207915 bytes .../com_longgui_auto_form_fill/config.toml | 7 + .../com_longgui_auto_form_fill/index.md | 56 +++++ .../templates/form_login.html | 54 +++++ 6 files changed, 340 insertions(+) create mode 100644 extension_root/com_longgui_auto_form_fill/__init__.py create mode 100644 extension_root/com_longgui_auto_form_fill/apps.py create mode 100644 extension_root/com_longgui_auto_form_fill/arkid_chrome_extension.zip create mode 100644 extension_root/com_longgui_auto_form_fill/config.toml create mode 100644 extension_root/com_longgui_auto_form_fill/index.md create mode 100644 extension_root/com_longgui_auto_form_fill/templates/form_login.html diff --git a/extension_root/com_longgui_auto_form_fill/__init__.py b/extension_root/com_longgui_auto_form_fill/__init__.py new file mode 100644 index 000000000..80f92e058 --- /dev/null +++ b/extension_root/com_longgui_auto_form_fill/__init__.py @@ -0,0 +1,216 @@ +from arkid.core.extension.app_protocol import AppProtocolExtension +from arkid.core.translation import gettext_default as _ +from pydantic import Field +from arkid.core.event import CREATE_APP, UPDATE_APP, DELETE_APP +import os +from arkid.common.logger import logger +from arkid.config import get_app_config +from typing import Optional +from urllib.parse import urlparse +from arkid.core.models import ExpiringToken +from arkid.core.extension import create_extension_schema, Extension +from django.urls import reverse +from django.shortcuts import redirect +from arkid.core.models import Tenant, ExpiringToken, App +from django.shortcuts import render +from django.http import StreamingHttpResponse +from django.http.response import HttpResponseRedirect, JsonResponse, HttpResponse +from arkid.core.api import api, operation +from arkid.core.constants import * +from arkid.config import get_app_config +from django.conf import settings +from pathlib import Path +from arkid.common.arkstore import get_app_config_from_arkstore + + +CURRENT_DIR = Path(__file__).resolve().parent + +AutoFormFillConfigSchema = create_extension_schema( + 'AutoFormFillConfigSchema', + __file__, + [ + ('login_url', str, Field(title=_('Auto Form Fill APP Login URL', '登录URL'))), + ( + 'username_css', + str, + Field(title=_('Username CSS Selector', '用户名输入框CSS Selector')), + ), + ( + 'password_css', + str, + Field(title=_('Password CSS Selector', '密码输入框CSS Selector')), + ), + ( + 'submit_css', + str, + Field(title=_('Submit Button CSS Selector', '提交/登录按钮CSS Selector')), + ), + ( + 'extra_js', + str, + Field(format="textarea", title=_('Extra Element JavaScrip Selector', '额外的元素JavaScript Selector')), + ), + ('auto_login', bool, Field(default=False, title=_('Auto Login', '自动登录'))), + ], +) + + +class AutoFormFillExtension(AppProtocolExtension): + def load(self): + tmpl_dir = CURRENT_DIR / 'templates' + settings.TEMPLATES[0]["DIRS"].append(str(tmpl_dir)) + self.register_app_protocol_schema(AutoFormFillConfigSchema, 'AutoFormFill') + self.register_api( + '/apps/{app_id}/arkid_form_login/', 'GET', self.login, auth=None + ) + self.register_api( + '/arkid_chrome_extension/download/', 'GET', self.download, auth=None + ) + self.register_api('/apps/', 'GET', self.app_list) + self.register_api('/apps/{app_id}/', 'GET', self.app_config) + super().load() + + def create_app(self, event, **kwargs): + self.update_app_url(event, True) + return True + + def update_app(self, event, **kwargs): + self.update_app_url(event, False) + return True + + def delete_app(self, event, **kwargs): + # 删除应用 + return True + + def update_app_url(self, event, is_created): + ''' + 更新配置中的url信息 + ''' + app = event.data["app"] + config = get_app_config() + frontend_url = config.get_frontend_host(schema=True) + + app.url = ( + f'{frontend_url}/api/v1/{self.pname}/apps/{app.id.hex}/arkid_form_login/' + ) + app.save() + + @operation(roles=[NORMAL_USER, TENANT_ADMIN, PLATFORM_ADMIN]) + def login(self, request, app_id, tenant_id=None): + """ + 判断是否已经授权过,如果没有跳转到输入账号表单页面,发起认证授权 + 如果已经授权过,直接拿到已经保存的token,获取authkey,登录易签宝官网首页 + """ + token = request.GET.get("token") + if not token: + login_url = reverse('login_enter') + if tenant_id: + response = redirect( + f'{login_url}?next=/api/v1/{self.pname}/apps/{app_id}/arkid_form_login/&tenant_id={tenant_id}' + ) + else: + response = redirect( + f'{login_url}?next=/api/v1/{self.pname}/apps/{app_id}/arkid_form_login/' + ) + return response + + errors = [] + + app = App.valid_objects.get(id=app_id) + expiring_token = ExpiringToken.objects.get(token=token) + + user = expiring_token.user + tenant = user.tenant + + if app.tenant != tenant: + errors.append("错误的app_uuid,找不到该自动表单代填应用") + + err_msg = "|".join(errors) + + config = get_app_config() + frontend_url = config.get_frontend_host(schema=True) + + download_url = ( + f'{frontend_url}/api/v1/{self.pname}/arkid_chrome_extension/download/' + ) + context = { + "err_msg": err_msg, + "app_uuid": app.id.hex, + "tenant_uuid": tenant.id.hex, + "user_uuid": user.id.hex, + "download_url": download_url, + } + return render(request, "form_login.html", context=context) + + @operation(roles=[NORMAL_USER, TENANT_ADMIN, PLATFORM_ADMIN]) + def download(self, request): + """ + 提供chrome 表单代填插件 + """ + file_name = "arkid_chrome_extension.zip" + base_dir = os.path.dirname(os.path.abspath(__file__)) + file_path = os.path.join(base_dir, file_name) + + def file_iterator(file_path, chunk_size=512): + """ + 文件生成器,防止文件过大,导致内存溢出 + :param file_path: 文件绝对路径 + :param chunk_size: 块大小 + :return: 生成器 + """ + with open(file_path, mode="rb") as f: + while True: + c = f.read(chunk_size) + if c: + yield c + else: + break + + try: + # 设置响应头 + # StreamingHttpResponse将文件内容进行流式传输,数据量大可以用这个方法 + response = StreamingHttpResponse(file_iterator(file_path)) + # 以流的形式下载文件,这样可以实现任意格式的文件下载 + response["Content-Type"] = "application/octet-stream" + # Content-Disposition就是当用户想把请求所得的内容存为一个文件的时候提供一个默认的文件名 + response["Content-Disposition"] = 'attachment;filename="{}"'.format( + file_name + ) + except: + return HttpResponse("Sorry but Not Found the File") + return response + + @operation(roles=[NORMAL_USER, TENANT_ADMIN, PLATFORM_ADMIN]) + def app_config(self, request, app_id): + """ + 返回app的config + """ + app = App.valid_objects.get(id=app_id) + if not app: + return JsonResponse({}) + + if app.arkstore_app_id: + config = get_app_config_from_arkstore(request, app.arkstore_app_id) + return config + + if app.config: + return app.config.config + else: + return JsonResponse({}) + + @operation(roles=[NORMAL_USER, TENANT_ADMIN, PLATFORM_ADMIN]) + def app_list(self, request): + """ + 返回app的config + """ + user = request.user + tenant = user.tenant + all_apps = App.valid_objects.filter(tenant=tenant, type="AutoFormFill") + if not all_apps: + return JsonResponse({'result': []}) + + result = [{'uuid': app.id.hex, 'name': app.name} for app in all_apps] + return JsonResponse({'result': result}) + + +extension = AutoFormFillExtension() diff --git a/extension_root/com_longgui_auto_form_fill/apps.py b/extension_root/com_longgui_auto_form_fill/apps.py new file mode 100644 index 000000000..a996eaab0 --- /dev/null +++ b/extension_root/com_longgui_auto_form_fill/apps.py @@ -0,0 +1,7 @@ +from django.apps import AppConfig + + +app_label = 'com_longgui_auto_form_fill' + +class AutoFormFillAppConfig(AppConfig): + name = app_label diff --git a/extension_root/com_longgui_auto_form_fill/arkid_chrome_extension.zip b/extension_root/com_longgui_auto_form_fill/arkid_chrome_extension.zip new file mode 100644 index 0000000000000000000000000000000000000000..565f89152abbb84240ece2fb986b893c5c70f84c GIT binary patch literal 207915 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

F^-LFKhB|+DCz+MYm;fC^CN^n{#}1vgdqG!1tvy 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%0Ab1VqFLUU_u5n&v#s#Oezc8h7sM&7qw+E-_R)B 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�}c@a62`kxfH;_pd#7Oz|=A|#X<)z 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 Gp#K3WwUg%n literal 0 HcmV?d00001 diff --git a/extension_root/com_longgui_auto_form_fill/config.toml b/extension_root/com_longgui_auto_form_fill/config.toml new file mode 100644 index 000000000..b3e08ec88 --- /dev/null +++ b/extension_root/com_longgui_auto_form_fill/config.toml @@ -0,0 +1,7 @@ +package='com.longgui.auto.form.fill' +name='帐密代填插件' +version='1.1' +labels='auto-form-fill' +homepage='http://longguikeji.gitee.io/arkid/%20%E5%85%B6%E5%AE%83%E6%8F%92%E4%BB%B6/com_longgui_auto_form_fill/' +logo='' +author='fanhe@longguikeji.com' diff --git a/extension_root/com_longgui_auto_form_fill/index.md b/extension_root/com_longgui_auto_form_fill/index.md new file mode 100644 index 000000000..475f7f894 --- /dev/null +++ b/extension_root/com_longgui_auto_form_fill/index.md @@ -0,0 +1,56 @@ +# 账密代填插件 + +## 功能介绍 + +通过此插件创建应用后,安装对应的chrome插件,可以实现将用于登录该应用的账号和密码存储在chrome插件里,点击应用图标,可以选择登录的账号,
+自动跳转到该应用的登录URL,并自动填入应用登录页账号和密码,实现自动登录,避免每次输入账号密码。
+另外,可以在chrome插件里做新增、修改、删除账号密码等管理操作。 + +### 配置账密代填应用 + +=== "创建代理URL应用" + + [![vLCUaQ.png](https://s1.ax1x.com/2022/09/09/vLCUaQ.png)](https://imgse.com/i/vLCUaQ) + + +=== "配置应用协议" + + [![vLCbZD.png](https://s1.ax1x.com/2022/09/09/vLCbZD.png)](https://imgse.com/i/vLCbZD) + + !!! 提示 + 自动登录登录打开, 代表应用登录页自动填入账号密码后,自动点击登录按钮, 否则不自动点击登录按钮 + + +=== "点击应用图标" + + [![vLPidg.png](https://s1.ax1x.com/2022/09/09/vLPidg.png)](https://imgse.com/i/vLPidg) + +=== "安装chrome插件" + + + 如果没有安装过chrome插件,需要按页面提示先安装chrome插件,安装完成后,刷新页面 + + [![vLPg6P.png](https://s1.ax1x.com/2022/09/09/vLPg6P.png)](https://imgse.com/i/vLPg6P) + + +=== "首次登录输入账号密码" + + [![vLiQjP.png](https://s1.ax1x.com/2022/09/09/vLiQjP.png)](https://imgse.com/i/vLiQjP) + + 点击添加后,会自动跳转到应用登录页面 + + +=== "跳转到应用登录页面" + + [![vLiDBT.png](https://s1.ax1x.com/2022/09/09/vLiDBT.png)](https://imgse.com/i/vLiDBT) + + +### 使用chrome插件管理账号 + +=== "添加应用账号" + + [![vLiIHO.png](https://s1.ax1x.com/2022/09/09/vLiIHO.png)](https://imgse.com/i/vLiIHO) + +=== "重新点击应用图标" + + [![vLiH4H.png](https://s1.ax1x.com/2022/09/09/vLiH4H.png)](https://imgse.com/i/vLiH4H) diff --git a/extension_root/com_longgui_auto_form_fill/templates/form_login.html b/extension_root/com_longgui_auto_form_fill/templates/form_login.html new file mode 100644 index 000000000..0ec44b69b --- /dev/null +++ b/extension_root/com_longgui_auto_form_fill/templates/form_login.html @@ -0,0 +1,54 @@ + + + + + + ArkID账密代填 + + + + + + + + + +

+

检测到您当前浏览器没有安装ArkId自动表单代填chrome浏览器插件,请先下载安装

+

下载链接

+
+

插件安装步骤

+
+

1. 点击下载链接,下载插件zip包到本地后解压缩

+ vqOR56.png +

2. 打开chrome管理扩展程序页面,打开开发者模式,点击加载已解压的扩展程序

+ vqXprj.png +

3. 选择步骤1中解压缩的插件目录

+ vqXEGT.png +

4. 固定插件到地址栏,方便使用

+ vqXMZR.png +
+
+ +
+ +
+ {{err_msg}} +
+ +