mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-10 17:30:29 +08:00
[API节点]显示API节点运行日志 [用户]增加可用功能控制
This commit is contained in:
78
internal/web/actions/default/users/features.go
Normal file
78
internal/web/actions/default/users/features.go
Normal file
@@ -0,0 +1,78 @@
|
||||
package users
|
||||
|
||||
import (
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/users/userutils"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
"github.com/iwind/TeaGo/actions"
|
||||
"github.com/iwind/TeaGo/lists"
|
||||
"github.com/iwind/TeaGo/maps"
|
||||
)
|
||||
|
||||
type FeaturesAction struct {
|
||||
actionutils.ParentAction
|
||||
}
|
||||
|
||||
func (this *FeaturesAction) Init() {
|
||||
this.Nav("", "", "feature")
|
||||
}
|
||||
|
||||
func (this *FeaturesAction) RunGet(params struct {
|
||||
UserId int64
|
||||
}) {
|
||||
err := userutils.InitUser(this.Parent(), params.UserId)
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
|
||||
featuresResp, err := this.RPC().UserRPC().FindAllUserFeatureDefinitions(this.AdminContext(), &pb.FindAllUserFeatureDefinitionsRequest{})
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
allFeatures := featuresResp.Features
|
||||
|
||||
userFeaturesResp, err := this.RPC().UserRPC().FindUserFeatures(this.AdminContext(), &pb.FindUserFeaturesRequest{UserId: params.UserId})
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
userFeatureCodes := []string{}
|
||||
for _, userFeature := range userFeaturesResp.Features {
|
||||
userFeatureCodes = append(userFeatureCodes, userFeature.Code)
|
||||
}
|
||||
|
||||
featureMaps := []maps.Map{}
|
||||
for _, feature := range allFeatures {
|
||||
featureMaps = append(featureMaps, maps.Map{
|
||||
"name": feature.Name,
|
||||
"code": feature.Code,
|
||||
"description": feature.Description,
|
||||
"isChecked": lists.ContainsString(userFeatureCodes, feature.Code),
|
||||
})
|
||||
}
|
||||
this.Data["features"] = featureMaps
|
||||
|
||||
this.Show()
|
||||
}
|
||||
|
||||
func (this *FeaturesAction) RunPost(params struct {
|
||||
UserId int64
|
||||
Codes []string
|
||||
|
||||
Must *actions.Must
|
||||
CSRF *actionutils.CSRF
|
||||
}) {
|
||||
defer this.CreateLogInfo("设置用户 %d 的功能列表", params.UserId)
|
||||
|
||||
_, err := this.RPC().UserRPC().UpdateUserFeatures(this.AdminContext(), &pb.UpdateUserFeaturesRequest{
|
||||
UserId: params.UserId,
|
||||
FeatureCodes: params.Codes,
|
||||
})
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
this.Success()
|
||||
}
|
||||
Reference in New Issue
Block a user