dev: rbac

This commit is contained in:
loveuer
2024-11-01 17:47:33 +08:00
parent 9e8a47a7c6
commit 58fae2e090
8 changed files with 303 additions and 0 deletions

11
model/privilege.go Normal file
View File

@ -0,0 +1,11 @@
package model
type Privilege struct {
CreatedAt int64 `json:"created_at" gorm:"column:created_at;autoCreateTime:milli"`
UpdatedAt int64 `json:"updated_at" gorm:"column:updated_at;autoUpdateTime:milli"`
DeletedAt int64 `json:"deleted_at" gorm:"index;column:deleted_at;default:0"`
Code string `json:"code" gorm:"column:code;primaryKey"`
Label string `json:"label" gorm:"column:label"`
Parent string `json:"parent" gorm:"column:parent"`
Scope string `json:"scope" gorm:"column:scope"`
}

13
model/role.go Normal file
View File

@ -0,0 +1,13 @@
package model
import "uauth/internal/sqlType"
type Role struct {
CreatedAt int64 `json:"created_at" gorm:"column:created_at;autoCreateTime:milli"`
UpdatedAt int64 `json:"updated_at" gorm:"column:updated_at;autoUpdateTime:milli"`
DeletedAt int64 `json:"deleted_at" gorm:"index;column:deleted_at;default:0"`
Code string `json:"code" gorm:"primaryKey;column:code"`
Label string `json:"label" gorm:"column:label"`
Parent string `json:"parent" gorm:"column:parent"`
PrivilegeCodes sqlType.StrSlice `json:"privilege_codes" gorm:"column:privilege_codes"`
}

11
model/scope.go Normal file
View File

@ -0,0 +1,11 @@
package model
// 用户权限作用域
type Scope struct {
Code string `json:"code" gorm:"column:code;type:varchar(8);not null;primaryKey"`
CreatedAt int64 `json:"created_at" gorm:"column:created_at;autoCreateTime:milli"`
UpdatedAt int64 `json:"updated_at" gorm:"column:updated_at;autoUpdateTime:milli"`
DeletedAt int64 `json:"deleted_at" gorm:"index;column:deleted_at;default:0"`
Label string `json:"label" gorm:"column:label;type:varchar(64)"`
Parent string `json:"parent" gorm:"column:parent;type:varchar(8)"`
}

View File

@ -6,6 +6,7 @@ import (
"github.com/loveuer/nf/nft/log"
"time"
"uauth/internal/opt"
"uauth/internal/sqlType"
)
type Status int64
@ -29,6 +30,9 @@ type User struct {
CreatedByName string `json:"created_by_name" gorm:"column:created_by_name;type:varchar(64)"`
LoginAt int64 `json:"login_at" gorm:"-"`
Roles []*Role `json:"-" gorm:"-"`
RoleNames sqlType.StrSlice `json:"role_names" column:"role_names"`
}
func (u *User) JwtEncode() (token string, err error) {
@ -40,6 +44,7 @@ func (u *User) JwtEncode() (token string, err error) {
"username": u.Username,
"nickname": u.Nickname,
"status": u.Status,
"avatar": u.Avatar,
"login_at": now.UnixMilli(),
})