feat(rbac): add roles and permissions
This commit is contained in:
parent
86a32a942c
commit
694b7bd09a
37 changed files with 2682 additions and 218 deletions
|
|
@ -6,8 +6,11 @@ from app.core.security import (
|
|||
get_access_token_expire_seconds,
|
||||
verify_password,
|
||||
)
|
||||
from app.core.rbac import get_current_active_user, get_user_permission_names
|
||||
from app.db.database import get_db
|
||||
from app.models.user import User
|
||||
from app.repositories.user_repository import UserRepository
|
||||
from app.schemas.rbac import CurrentUserResponse
|
||||
from app.schemas.user import LoginRequest, LoginResponse
|
||||
|
||||
router = APIRouter(
|
||||
|
|
@ -21,7 +24,7 @@ def login(
|
|||
login: LoginRequest,
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
user = db.query(User).filter(User.username == login.username).first()
|
||||
user = UserRepository.get_by_username(db, login.username)
|
||||
|
||||
if not user:
|
||||
raise HTTPException(
|
||||
|
|
@ -43,3 +46,14 @@ def login(
|
|||
"expires_in": get_access_token_expire_seconds(),
|
||||
"user": user,
|
||||
}
|
||||
|
||||
|
||||
@router.get("/me", response_model=CurrentUserResponse)
|
||||
def me(current_user: User = Depends(get_current_active_user)):
|
||||
return {
|
||||
"id": current_user.id,
|
||||
"username": current_user.username,
|
||||
"email": current_user.email,
|
||||
"role": current_user.primary_role.name,
|
||||
"permissions": sorted(get_user_permission_names(current_user)),
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue