permission.go 1.8 KB

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