Skip to content

Commit 58384ad

Browse files
authored
Merge pull request #98 from 4linuxfun/test
v1.3.4
2 parents 8c210f6 + c3b3558 commit 58384ad

File tree

14 files changed

+98
-28
lines changed

14 files changed

+98
-28
lines changed

server/crud/internal/roles.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ class CRUDRole(CRUDBase[Role]):
1010
def get_roles_by_id(self, session: Session, roles: List[str]):
1111
return session.exec(select(self.model).where(self.model.id.in_(roles))).all()
1212

13+
def check_exist(self, session: Session, name: str):
14+
sql = select(self.model).where(self.model.name == name)
15+
return session.exec(sql).one()
16+
1317
def check_admin(self, session: Session, uid: int) -> bool:
1418
"""
1519
通过uid,判断此用户是否在admin组中

server/models/internal/role.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99

1010
class RoleBase(SQLModel):
11-
name: str = Field(max_length=20, sa_column_kwargs={'comment': '角色名'})
11+
name: str = Field(max_length=20, sa_column_kwargs={'unique': True, 'comment': '角色名'})
1212
description: str = Field(max_length=100, sa_column_kwargs={'comment': '描述'})
1313
enable: bool = Field(default=True, sa_column=Column(Boolean, comment='启用'))
1414

server/models/internal/user.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010

1111
class UserWithOutPasswd(SQLModel):
12-
name: str = Field(max_length=20, sa_column_kwargs={'comment': '用户名'})
12+
name: str = Field(max_length=20, sa_column_kwargs={'unique': True, 'comment': '用户名'})
1313
enable: bool = Field(default=True, sa_column=Column(Boolean, comment='可用'))
1414
avatar: Optional[str] = Field(max_length=100, sa_column_kwargs={'comment': '头像'})
1515
email: Optional[str] = Field(max_length=20, sa_column_kwargs={'comment': '邮箱'})

server/routers/internal/roles.py

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from fastapi import APIRouter, Depends, status
44
from fastapi.exceptions import HTTPException
55
from sqlmodel import Session
6+
from sqlalchemy.exc import NoResultFound
67
from ...common.response_code import ApiResponse
78
from ...common.auth_casbin import Authority
89
from ...common.database import get_session
@@ -53,17 +54,37 @@ async def get_roles(search: Pagination[RoleBase], session: Session = Depends(get
5354
)
5455

5556

57+
@router.get('/roles/exist', summary='角色是否存在')
58+
async def check_uname_exist(name: str, session: Session = Depends(get_session)):
59+
try:
60+
crud.internal.role.check_exist(session, name)
61+
except NoResultFound:
62+
return ApiResponse()
63+
else:
64+
return ApiResponse(
65+
message='error',
66+
data='error'
67+
)
68+
69+
5670
@router.post('/roles', summary="新建角色", response_model=ApiResponse[Role],
5771
dependencies=[Depends(Authority('role:add'))])
5872
async def add_roles(role_info: RoleInsert, session: Session = Depends(get_session)):
5973
logger.debug(role_info)
6074
enable_menus = role_info.menus
6175
delattr(role_info, 'menus')
62-
db_obj = crud.internal.role.insert(session, Role(**role_info.dict()))
63-
crud.internal.role.update_menus(session, db_obj, enable_menus)
64-
return ApiResponse(
65-
data=db_obj
66-
)
76+
try:
77+
db_obj = crud.internal.role.insert(session, Role(**role_info.dict()))
78+
crud.internal.role.update_menus(session, db_obj, enable_menus)
79+
return ApiResponse(
80+
data=db_obj
81+
)
82+
except Exception as e:
83+
logger.error(f"add role error:{str(e)}")
84+
return ApiResponse(
85+
code=500,
86+
message=f"新建角色错误"
87+
)
6788

6889

6990
@router.put('/roles', summary="更新角色", response_model=ApiResponse[Role],

server/routers/internal/user.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,17 @@ async def get_roles(id: Optional[int] = None, session: Session = Depends(get_ses
3434
)
3535

3636

37-
@router.get('/users/exist', summary='用户是否存在', status_code=status.HTTP_204_NO_CONTENT)
37+
@router.get('/users/exist', summary='用户是否存在')
3838
async def check_uname_exist(name: str, session: Session = Depends(get_session)):
3939
try:
4040
crud.internal.user.check_name(session, name)
4141
except NoResultFound:
42-
return
42+
return ApiResponse()
4343
else:
44-
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail='用户名已存在')
44+
return ApiResponse(
45+
message='error',
46+
data='error'
47+
)
4548

4649

4750
@router.get('/users/{uid}',
@@ -88,8 +91,14 @@ async def update_user(user_info: UserCreateWithRoles, session: Session = Depends
8891
:param session:
8992
:return:
9093
"""
91-
logger.debug(user_info)
92-
user: User = crud.internal.user.insert(session, user_info)
94+
try:
95+
user: User = crud.internal.user.insert(session, user_info)
96+
except Exception as e:
97+
logger.error(f"User Add Error:{str(e)}")
98+
return ApiResponse(
99+
code=500,
100+
message=f"新建用户错误"
101+
)
93102
new_roles = [role.id for role in user.roles]
94103
for role in new_roles:
95104
casbin_enforcer.add_role_for_user(f'uid_{user.id}', f'role_{role}')
File renamed without changes.

www/.env.production

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
NODE_ENV=production
2+
VITE_APP_BASEURL='http://172.16.8.201:8000'

www/.env_pro

Lines changed: 0 additions & 2 deletions
This file was deleted.

www/src/api/roles.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ export const GetRoleInfo = (roleId) => GET('/api/roles' + roleId)
66
export const GetRoleEnableMenus = (roleId) => GET('/api/roles/enable-menus', {id: roleId})
77
export const PostNewRoles = (role) => POST('/api/roles', role)
88
export const PutRoles = (role) => PUT('/api/roles', role)
9-
export const DeleteRole = (roleId) => DELETE('/api/roles/' + roleId)
9+
export const DeleteRole = (roleId) => DELETE('/api/roles/' + roleId)
10+
export const GetRoleExist = (name) => GET('/api/roles/exist', {name})

www/src/utils/request.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ service.interceptors.response.use(
7474
message: response.data.message,
7575
type: 'error'
7676
})
77+
return Promise.reject()
7778
}
7879
},
7980
error => {

0 commit comments

Comments
 (0)