55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
package response
|
|
|
|
import (
|
|
"server/internal/db/sqlc"
|
|
"server/internal/pkg/httputil"
|
|
"time"
|
|
)
|
|
|
|
type SysUserRolesResponse struct {
|
|
ID uint `json:"id"`
|
|
Code string `json:"code"`
|
|
Description string `json:"description"`
|
|
}
|
|
|
|
type SysUserInfo struct {
|
|
ID int32 `json:"id"`
|
|
Account string `json:"account"`
|
|
Username string `json:"username"`
|
|
AvatarUrl string `json:"avatar_url"`
|
|
Roles []string `json:"roles"`
|
|
Menus []sqlc.SysMenu `json:"menus"`
|
|
Permissions []string `json:"permissions"`
|
|
}
|
|
|
|
type LoginResponse struct {
|
|
AccessToken string `json:"access_token"`
|
|
AccessTokenExp time.Time `json:"access_token_exp"`
|
|
RefreshToken string `json:"refresh_token"`
|
|
RefreshTokenExp time.Time `json:"refresh_token_exp"`
|
|
}
|
|
|
|
func NewSysUserInfo(user sqlc.GetSysUserByIDRow, roles []sqlc.SysRole, menus []sqlc.SysMenu, p []*string) *SysUserInfo {
|
|
roleCodes := make([]string, len(roles))
|
|
for i, role := range roles {
|
|
roleCodes[i] = role.Code
|
|
}
|
|
|
|
permissions := make([]string, 0, len(p))
|
|
for _, code := range p {
|
|
if code != nil {
|
|
permissions = append(permissions, *code)
|
|
}
|
|
}
|
|
|
|
return &SysUserInfo{
|
|
ID: user.ID,
|
|
Account: user.Account,
|
|
Username: user.Username,
|
|
AvatarUrl: httputil.BuildFileUrl(user.AvatarUrl),
|
|
Roles: roleCodes,
|
|
Menus: menus,
|
|
Permissions: permissions,
|
|
}
|
|
}
|