Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/content.en/docs/release-notes/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Information about release notes of INFINI Framework is provided here.
- chore: security configuration structure enhanced
- chore: remove unused grpc and cuckoo filter"
- chore: update seelog for vfs #363

- chore: udpate update desc to api token, fix permission #372

## 1.4.0 (2025-12-19)
### ❌ Breaking changes
Expand Down
11 changes: 9 additions & 2 deletions modules/security/access_token/authentication.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ func RequestAccessToken(w http.ResponseWriter, req *http.Request, ps httprouter.

reqBody := struct {
Name string `json:"name"`
Description string `json:"description"`
Permissions []security.PermissionKey `json:"permissions,omitempty"`
}{}
err = api.DecodeJSON(req, &reqBody)
Expand Down Expand Up @@ -203,15 +204,15 @@ func RequestAccessToken(w http.ResponseWriter, req *http.Request, ps httprouter.
}

expiredAT := time.Now().Add(365 * 24 * time.Hour).Unix()
res, err := CreateAPIToken(reqUser, reqBody.Name, "general", expiredAT, permissions)
res, err := CreateAPIToken(reqUser, reqBody.Name,reqBody.Description, "general", expiredAT, permissions)
if err != nil {
panic(err)
}

api.WriteJSON(w, res, 200)
}

func CreateAPIToken(user *security.UserSessionInfo, tokenName, typeName string, expiredAT int64, permissions []security.PermissionKey) (util.MapStr, error) {
func CreateAPIToken(user *security.UserSessionInfo, tokenName, tokenDesc, typeName string, expiredAT int64, permissions []security.PermissionKey) (util.MapStr, error) {

if tokenName == "" {
tokenName = GenerateApiTokenName("")
Expand All @@ -233,6 +234,7 @@ func CreateAPIToken(user *security.UserSessionInfo, tokenName, typeName string,
accessToken.Permissions = permissions
accessToken.ExpireIn = expiredAT
accessToken.Name = tokenName
accessToken.Description = tokenDesc

if isNative() {
ctx := orm.NewContext()
Expand Down Expand Up @@ -374,6 +376,7 @@ func UpdateAccessToken(w http.ResponseWriter, req *http.Request, ps httprouter.P
}
reqBody := struct {
Name string `json:"name,omitempty"`
Description string `json:"description"`
Permissions []security.PermissionKey `json:"permissions,omitempty"`
}{}
err = api.DecodeJSON(req, &reqBody)
Expand Down Expand Up @@ -412,6 +415,10 @@ func UpdateAccessToken(w http.ResponseWriter, req *http.Request, ps httprouter.P
if reqBody.Name != "" {
token.Name = reqBody.Name
}
if reqBody.Description != "" {
token.Description = reqBody.Description
}

if len(reqBody.Permissions) > 0 {
if isNative() {
// The NEW permissions must be a subset of the caller's own permissions.
Expand Down
9 changes: 7 additions & 2 deletions modules/security/rbac/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,13 @@ import (
"infini.sh/framework/modules/security/http_filters"
)

var ReadPermissionLists = security.GetSimplePermission("generic", "security:permission", security.Read)

func init() {
api.HandleUIMethod(api.GET, "/security/permission/", ListPermission, api.RequirePermission(ReadPermissionLists))

}

func Init() {

provider := SecurityBackendProvider{}
Expand All @@ -21,7 +28,6 @@ func Init() {

orm.MustRegisterSchemaWithIndexName(&security.UserAccount{}, "app-users")
orm.MustRegisterSchemaWithIndexName(&security.UserRole{}, "app-roles")
ReadPermissionLists := security.GetSimplePermission("generic", "security:permission", security.Read)

CreateRolePermission := security.GetSimplePermission("generic", "security:role", security.Create)
UpdateRolePermission := security.GetSimplePermission("generic", "security:role", security.Update)
Expand All @@ -42,7 +48,6 @@ func Init() {
CreateUserPermission, UpdateUserPermission, DeleteUserPermission, ReadUserPermission, SearchUserPermission,
SearchPrincipalPermission)

api.HandleUIMethod(api.GET, "/security/permission/", ListPermission, api.RequirePermission(ReadPermissionLists))

api.HandleUIMethod(api.POST, "/security/role/", CreateRole, api.RequirePermission(CreateRolePermission))
api.HandleUIMethod(api.GET, "/security/role/_search", SearchRole, api.RequirePermission(SearchRolePermission))
Expand Down
Loading