mirror of
https://github.com/cuigh/swirl
synced 2024-12-30 15:53:24 +00:00
55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
package controller
|
|
|
|
import (
|
|
"github.com/cuigh/auxo/data"
|
|
"github.com/cuigh/auxo/data/set"
|
|
"github.com/cuigh/auxo/net/web"
|
|
"github.com/cuigh/swirl/biz"
|
|
"github.com/cuigh/swirl/model"
|
|
)
|
|
|
|
func permEdit(ctx web.Context, resType, resID, tpl string, m data.Map) error {
|
|
perm, err := biz.Perm.Get(resType, resID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if perm == nil {
|
|
perm = &model.Perm{}
|
|
}
|
|
|
|
roles, err := biz.Role.List()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
checkedRoles := set.NewStringSet(perm.Roles...)
|
|
var users []*model.User
|
|
for _, id := range perm.Users {
|
|
var user *model.User
|
|
if user, err = biz.User.GetByID(id); err != nil {
|
|
return err
|
|
} else if user != nil {
|
|
users = append(users, user)
|
|
}
|
|
}
|
|
|
|
m.Set("Perm", perm).Set("Roles", roles).Set("CheckedRoles", checkedRoles).Set("Users", users)
|
|
return ctx.Render(tpl, m)
|
|
}
|
|
|
|
func permUpdate(resType, argName string) web.HandlerFunc {
|
|
return func(ctx web.Context) error {
|
|
perm := &model.Perm{
|
|
ResType: resType,
|
|
ResID: ctx.P(argName),
|
|
}
|
|
err := ctx.Bind(perm)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = biz.Perm.Update(perm, ctx.User())
|
|
return ajaxResult(ctx, err)
|
|
}
|
|
}
|