| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package main
- import (
- "net/http"
- "fmt"
- "encoding/json"
- reg "imuslab.com/arozos/mod/auth/register"
- prout "imuslab.com/arozos/mod/prouter"
- )
- var (
- registerHandler *reg.RegisterHandler
- )
- func RegisterSystemInit(){
- //Register the endpoints for public registration
- rh := reg.NewRegisterHandler(sysdb, authAgent, permissionHandler, reg.RegisterOptions{
- Hostname: *host_name,
- VendorIcon: "web/" + iconVendor,
- });
- registerHandler = rh
- //Set the allow registry states
- if (*allow_public_registry){
- registerHandler.AllowRegistry = true
- }else{
- registerHandler.AllowRegistry = false
- }
- http.HandleFunc("/public/register/register.system",registerHandler.HandleRegisterInterface);
- http.HandleFunc("/public/register/handleRegister.system",registerHandler.HandleRegisterRequest);
- http.HandleFunc("/public/register/checkPublicRegister",registerHandler.HandleRegisterCheck);
- //Register settings
- registerSetting(settingModule{
- Name: "Public Registry",
- Desc: "Allow public users to create account in this host",
- IconPath: "SystemAO/users/img/small_icon.png",
- Group: "Users",
- StartDir: "SystemAO/users/pubreg.html",
- RequireAdmin: true,
- })
- //Register Setting Interface for setting interfaces
-
- adminrouter := prout.NewModuleRouter(prout.RouterOption{
- ModuleName: "System Setting",
- AdminOnly: true,
- UserHandler: userHandler,
- DeniedHandler: func(w http.ResponseWriter, r *http.Request){
- sendErrorResponse(w, "Permission Denied");
- },
- });
-
- //Handle updates of the default group
- adminrouter.HandleFunc("/system/register/setDefaultGroup", register_handleSetDefaultGroup);
- //Handle if the current handler allow registry
- adminrouter.HandleFunc("/system/register/getAllowRegistry",register_handleGetAllowRegistry)
-
- //Handle toggle
- adminrouter.HandleFunc("/system/register/setAllowRegistry",register_handleToggleRegistry);
-
- //Get a list of email registered in the system
- adminrouter.HandleFunc("/system/register/listUserEmails",register_handleEmailListing);
- //Clear User record that has no longer use this service
- adminrouter.HandleFunc("/system/register/cleanUserRegisterInfo",register_handleRegisterCleaning);
- }
- func register_handleRegisterCleaning(w http.ResponseWriter, r *http.Request){
- //Get all user emails from the registerHandler
- registerHandler.CleanRegisters();
- sendOK(w);
- }
- func register_handleEmailListing(w http.ResponseWriter, r *http.Request){
- //Get all user emails from the registerHandler
- userRegisterInfos := registerHandler.ListAllUserEmails();
- useCSV, _ := mv(r, "csv", false)
- if useCSV == "true"{
- //Prase as csv
- csvString := "Username,Email,Still Registered\n"
- for _, v := range userRegisterInfos{
- registered := "false"
- s, _ := v[2].(bool)
- if s == true{
- registered = "true"
- }
- csvString += fmt.Sprintf("%v", v[0]) + "," + fmt.Sprintf("%v", v[1]) + "," + registered + "\n"
- }
- w.Header().Set("Content-Disposition", "attachment; filename=registerInfo.csv")
- w.Header().Set("Content-Type", "text/csv")
- w.Write([]byte(csvString))
- }else{
- //Prase as json
- jsonString, _ := json.Marshal(userRegisterInfos);
- sendJSONResponse(w, string(jsonString));
- }
- }
- func register_handleSetDefaultGroup(w http.ResponseWriter, r *http.Request){
- getDefaultGroup, _ := mv(r, "get",true)
- if (getDefaultGroup == "true"){
- jsonString, _ := json.Marshal(registerHandler.DefaultUserGroup)
- sendJSONResponse(w,string(jsonString));
- return
- }
- newDefaultGroup, err := mv(r, "defaultGroup",true)
- if err != nil{
- sendErrorResponse(w, "defaultGroup not defined")
- return
- }
- err = registerHandler.SetDefaultUserGroup(newDefaultGroup);
- if err != nil{
- sendErrorResponse(w, err.Error())
- return
- }
- sendOK(w);
- }
- func register_handleGetAllowRegistry(w http.ResponseWriter, r *http.Request){
- jsonString, _ := json.Marshal(registerHandler.AllowRegistry)
- sendJSONResponse(w, string(jsonString))
- }
- func register_handleToggleRegistry(w http.ResponseWriter, r *http.Request){
- allowReg, err := mv(r, "allow",true)
- if err != nil{
- allowReg = "false"
- }
- registerHandler.SetAllowRegistry(allowReg == "true");
- sendOK(w);
- }
|