swirl/controller/perm.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)
}
}