permission.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package main
  2. import (
  3. "encoding/json"
  4. "log"
  5. "net/http"
  6. permission "imuslab.com/arozos/mod/permission"
  7. prout "imuslab.com/arozos/mod/prouter"
  8. )
  9. func permissionNewHandler() {
  10. ph, err := permission.NewPermissionHandler(sysdb)
  11. if err != nil {
  12. log.Println("Permission Handler creation failed.")
  13. panic(err)
  14. }
  15. permissionHandler = ph
  16. permissionHandler.LoadPermissionGroupsFromDatabase()
  17. }
  18. func permissionInit() {
  19. //Register the permission handler, require authentication except listgroup
  20. adminRouter := prout.NewModuleRouter(prout.RouterOption{
  21. ModuleName: "System Setting",
  22. AdminOnly: true,
  23. UserHandler: userHandler,
  24. DeniedHandler: func(w http.ResponseWriter, r *http.Request) {
  25. sendErrorResponse(w, "Permission Denied")
  26. },
  27. })
  28. //Must be handled by default router
  29. http.HandleFunc("/system/permission/listgroup", func(w http.ResponseWriter, r *http.Request) {
  30. if authAgent.GetUserCounts() == 0 {
  31. //There is no user within the system. Only allow register of admin account
  32. js, _ := json.Marshal([]string{"administrator"})
  33. sendJSONResponse(w, string(js))
  34. //permissionHandler.HandleListGroup(w, r)
  35. } else {
  36. //There are already users in the system. Only allow authorized users
  37. if authAgent.CheckAuth(r) {
  38. permissionHandler.HandleListGroup(w, r)
  39. } else {
  40. errorHandleNotLoggedIn(w, r)
  41. return
  42. }
  43. }
  44. })
  45. adminRouter.HandleFunc("/system/permission/newgroup", permissionHandler.HandleGroupCreate)
  46. adminRouter.HandleFunc("/system/permission/editgroup", permissionHandler.HandleGroupEdit)
  47. adminRouter.HandleFunc("/system/permission/delgroup", permissionHandler.HandleGroupRemove)
  48. registerSetting(settingModule{
  49. Name: "Permission Groups",
  50. Desc: "Handle the permission of access in groups",
  51. IconPath: "SystemAO/users/img/small_icon.png",
  52. Group: "Users",
  53. StartDir: "SystemAO/users/group.html",
  54. RequireAdmin: true,
  55. })
  56. }