mirror of
https://github.com/cuigh/swirl
synced 2024-12-30 15:53:24 +00:00
110 lines
2.8 KiB
Go
110 lines
2.8 KiB
Go
package controller
|
|
|
|
import (
|
|
"github.com/cuigh/auxo/data"
|
|
"github.com/cuigh/auxo/net/web"
|
|
"github.com/cuigh/swirl/biz"
|
|
"github.com/cuigh/swirl/model"
|
|
"github.com/cuigh/swirl/security"
|
|
)
|
|
|
|
// RoleController is a controller of user role
|
|
type RoleController struct {
|
|
Index web.HandlerFunc `path:"/" name:"role.list" authorize:"!" desc:"role list page"`
|
|
New web.HandlerFunc `path:"/new" name:"role.new" authorize:"!" desc:"new role page"`
|
|
Create web.HandlerFunc `path:"/new" method:"post" name:"role.create" authorize:"!" desc:"create role"`
|
|
Delete web.HandlerFunc `path:"/delete" method:"post" name:"role.delete" authorize:"!" desc:"delete role"`
|
|
Detail web.HandlerFunc `path:"/:id/detail" name:"role.detail" authorize:"!" desc:"role detail page"`
|
|
Edit web.HandlerFunc `path:"/:id/edit" name:"role.edit" authorize:"!" desc:"edit role page"`
|
|
Update web.HandlerFunc `path:"/:id/update" method:"post" name:"role.update" authorize:"!" desc:"update role"`
|
|
}
|
|
|
|
// Role creates an instance of RoleController
|
|
func Role() (c *RoleController) {
|
|
return &RoleController{
|
|
Index: roleIndex,
|
|
New: roleNew,
|
|
Create: roleCreate,
|
|
Delete: roleDelete,
|
|
Detail: roleDetail,
|
|
Edit: roleEdit,
|
|
Update: roleUpdate,
|
|
}
|
|
}
|
|
|
|
func roleIndex(ctx web.Context) error {
|
|
roles, err := biz.Role.List()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
m := newModel(ctx).Set("Roles", roles)
|
|
return ctx.Render("system/role/list", m)
|
|
}
|
|
|
|
func roleNew(ctx web.Context) error {
|
|
m := newModel(ctx).Set("Perms", security.Perms)
|
|
return ctx.Render("system/role/new", m)
|
|
}
|
|
|
|
func roleCreate(ctx web.Context) error {
|
|
role := &model.Role{}
|
|
err := ctx.Bind(role, true)
|
|
if err == nil {
|
|
err = biz.Role.Create(role, ctx.User())
|
|
}
|
|
return ajaxResult(ctx, err)
|
|
}
|
|
|
|
func roleDelete(ctx web.Context) error {
|
|
id := ctx.F("id")
|
|
err := biz.Role.Delete(id, ctx.User())
|
|
return ajaxResult(ctx, err)
|
|
}
|
|
|
|
func roleDetail(ctx web.Context) error {
|
|
id := ctx.P("id")
|
|
role, err := biz.Role.Get(id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if role == nil {
|
|
return web.ErrNotFound
|
|
}
|
|
|
|
perms := make(map[string]struct{})
|
|
for _, p := range role.Perms {
|
|
perms[p] = data.Empty
|
|
}
|
|
m := newModel(ctx).Set("Role", role).Set("Perms", security.Perms).Set("CheckedPerms", perms)
|
|
return ctx.Render("system/role/detail", m)
|
|
}
|
|
|
|
func roleEdit(ctx web.Context) error {
|
|
id := ctx.P("id")
|
|
role, err := biz.Role.Get(id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if role == nil {
|
|
return web.ErrNotFound
|
|
}
|
|
|
|
perms := make(map[string]struct{})
|
|
for _, p := range role.Perms {
|
|
perms[p] = data.Empty
|
|
}
|
|
m := newModel(ctx).Set("Role", role).Set("Perms", security.Perms).Set("CheckedPerms", perms)
|
|
return ctx.Render("system/role/edit", m)
|
|
}
|
|
|
|
func roleUpdate(ctx web.Context) error {
|
|
role := &model.Role{}
|
|
err := ctx.Bind(role, true)
|
|
if err == nil {
|
|
role.ID = ctx.P("id")
|
|
err = biz.Role.Update(role, ctx.User())
|
|
}
|
|
return ajaxResult(ctx, err)
|
|
}
|