register.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package main
  2. import (
  3. "net/http"
  4. "fmt"
  5. "encoding/json"
  6. reg "imuslab.com/arozos/mod/auth/register"
  7. prout "imuslab.com/arozos/mod/prouter"
  8. )
  9. var (
  10. registerHandler *reg.RegisterHandler
  11. )
  12. func RegisterSystemInit(){
  13. //Register the endpoints for public registration
  14. rh := reg.NewRegisterHandler(sysdb, authAgent, permissionHandler, reg.RegisterOptions{
  15. Hostname: *host_name,
  16. VendorIcon: "web/" + iconVendor,
  17. });
  18. registerHandler = rh
  19. //Set the allow registry states
  20. if (*allow_public_registry){
  21. registerHandler.AllowRegistry = true
  22. }else{
  23. registerHandler.AllowRegistry = false
  24. }
  25. http.HandleFunc("/public/register/register.system",registerHandler.HandleRegisterInterface);
  26. http.HandleFunc("/public/register/handleRegister.system",registerHandler.HandleRegisterRequest);
  27. http.HandleFunc("/public/register/checkPublicRegister",registerHandler.HandleRegisterCheck);
  28. //Register settings
  29. registerSetting(settingModule{
  30. Name: "Public Registry",
  31. Desc: "Allow public users to create account in this host",
  32. IconPath: "SystemAO/users/img/small_icon.png",
  33. Group: "Users",
  34. StartDir: "SystemAO/users/pubreg.html",
  35. RequireAdmin: true,
  36. })
  37. //Register Setting Interface for setting interfaces
  38. adminrouter := prout.NewModuleRouter(prout.RouterOption{
  39. ModuleName: "System Setting",
  40. AdminOnly: true,
  41. UserHandler: userHandler,
  42. DeniedHandler: func(w http.ResponseWriter, r *http.Request){
  43. sendErrorResponse(w, "Permission Denied");
  44. },
  45. });
  46. //Handle updates of the default group
  47. adminrouter.HandleFunc("/system/register/setDefaultGroup", register_handleSetDefaultGroup);
  48. //Handle if the current handler allow registry
  49. adminrouter.HandleFunc("/system/register/getAllowRegistry",register_handleGetAllowRegistry)
  50. //Handle toggle
  51. adminrouter.HandleFunc("/system/register/setAllowRegistry",register_handleToggleRegistry);
  52. //Get a list of email registered in the system
  53. adminrouter.HandleFunc("/system/register/listUserEmails",register_handleEmailListing);
  54. //Clear User record that has no longer use this service
  55. adminrouter.HandleFunc("/system/register/cleanUserRegisterInfo",register_handleRegisterCleaning);
  56. }
  57. func register_handleRegisterCleaning(w http.ResponseWriter, r *http.Request){
  58. //Get all user emails from the registerHandler
  59. registerHandler.CleanRegisters();
  60. sendOK(w);
  61. }
  62. func register_handleEmailListing(w http.ResponseWriter, r *http.Request){
  63. //Get all user emails from the registerHandler
  64. userRegisterInfos := registerHandler.ListAllUserEmails();
  65. useCSV, _ := mv(r, "csv", false)
  66. if useCSV == "true"{
  67. //Prase as csv
  68. csvString := "Username,Email,Still Registered\n"
  69. for _, v := range userRegisterInfos{
  70. registered := "false"
  71. s, _ := v[2].(bool)
  72. if s == true{
  73. registered = "true"
  74. }
  75. csvString += fmt.Sprintf("%v", v[0]) + "," + fmt.Sprintf("%v", v[1]) + "," + registered + "\n"
  76. }
  77. w.Header().Set("Content-Disposition", "attachment; filename=registerInfo.csv")
  78. w.Header().Set("Content-Type", "text/csv")
  79. w.Write([]byte(csvString))
  80. }else{
  81. //Prase as json
  82. jsonString, _ := json.Marshal(userRegisterInfos);
  83. sendJSONResponse(w, string(jsonString));
  84. }
  85. }
  86. func register_handleSetDefaultGroup(w http.ResponseWriter, r *http.Request){
  87. getDefaultGroup, _ := mv(r, "get",true)
  88. if (getDefaultGroup == "true"){
  89. jsonString, _ := json.Marshal(registerHandler.DefaultUserGroup)
  90. sendJSONResponse(w,string(jsonString));
  91. return
  92. }
  93. newDefaultGroup, err := mv(r, "defaultGroup",true)
  94. if err != nil{
  95. sendErrorResponse(w, "defaultGroup not defined")
  96. return
  97. }
  98. err = registerHandler.SetDefaultUserGroup(newDefaultGroup);
  99. if err != nil{
  100. sendErrorResponse(w, err.Error())
  101. return
  102. }
  103. sendOK(w);
  104. }
  105. func register_handleGetAllowRegistry(w http.ResponseWriter, r *http.Request){
  106. jsonString, _ := json.Marshal(registerHandler.AllowRegistry)
  107. sendJSONResponse(w, string(jsonString))
  108. }
  109. func register_handleToggleRegistry(w http.ResponseWriter, r *http.Request){
  110. allowReg, err := mv(r, "allow",true)
  111. if err != nil{
  112. allowReg = "false"
  113. }
  114. registerHandler.SetAllowRegistry(allowReg == "true");
  115. sendOK(w);
  116. }