// Display a list of ALL users in the system func AdminUserList(w http.ResponseWriter, r *http.Request, u *User) error { users, err := database.ListUsers() if err != nil { return err } data := struct { User *User Users []*User }{u, users} return RenderTemplate(w, "admin_users.html", &data) }
func Install(w http.ResponseWriter, r *http.Request) error { // we can only perform the inital installation if no // users exist in the system if users, err := database.ListUsers(); err != nil { return RenderError(w, err, http.StatusBadRequest) } else if len(users) != 0 { // if users exist in the systsem // we should render a NotFound page return RenderNotFound(w) } return RenderTemplate(w, "install.html", true) }
func InstallPost(w http.ResponseWriter, r *http.Request) error { // we can only perform the inital installation if no // users exist in the system if users, err := database.ListUsers(); err != nil { return RenderError(w, err, http.StatusBadRequest) } else if len(users) != 0 { // if users exist in the systsem // we should render a NotFound page return RenderNotFound(w) } // set the email and name user := NewUser(r.FormValue("name"), r.FormValue("email")) user.Admin = true // set the new password if err := user.SetPassword(r.FormValue("password")); err != nil { return RenderError(w, err, http.StatusBadRequest) } // verify fields are correct if err := user.Validate(); err != nil { return RenderError(w, err, http.StatusBadRequest) } // save to the database if err := database.SaveUser(user); err != nil { return RenderError(w, err, http.StatusBadRequest) } // update settings settings := Settings{} settings.Domain = r.FormValue("Domain") settings.Scheme = r.FormValue("Scheme") settings.GitHubApiUrl = "https://api.github.com" settings.GitHubDomain = "github.com" settings.GitlabApiUrl = "https://gitlab.com" settings.GitlabDomain = "gitlab.com" database.SaveSettings(&settings) // add the user to the session object // so that he/she is loggedin SetCookie(w, r, "_sess", user.Email) // send the user to the settings page // to complete the configuration. http.Redirect(w, r, "/account/admin/settings", http.StatusSeeOther) return nil }
// Returns a list of all Users. func TestListUsers(t *testing.T) { Setup() defer Teardown() users, err := database.ListUsers() if err != nil { t.Error(err) } // verify user count if len(users) != 4 { t.Errorf("Exepected %d users in database, got %d", 4, len(users)) return } // get the first user in the list and verify // fields are being populated correctly u := users[0] if u.ID != 1 { t.Errorf("Exepected ID %d, got %d", 1, u.ID) } if u.Password != "$2a$10$b8d63QsTL38vx7lj0HEHfOdbu1PCAg6Gfca74UavkXooIBx9YxopS" { t.Errorf("Exepected Password %s, got %s", "$2a$10$b8d63QsTL38vx7lj0HEHfOdbu1PCAg6Gfca74UavkXooIBx9YxopS", u.Password) } if u.Token != "123" { t.Errorf("Exepected Token %s, got %s", "123", u.Token) } if u.Name != "Brad Rydzewski" { t.Errorf("Exepected Name %s, got %s", "Brad Rydzewski", u.Name) } if u.Email != "*****@*****.**" { t.Errorf("Exepected Email %s, got %s", "*****@*****.**", u.Email) } if u.Gravatar != "8c58a0be77ee441bb8f8595b7f1b4e87" { t.Errorf("Exepected Gravatar %s, got %s", "8c58a0be77ee441bb8f8595b7f1b4e87", u.Gravatar) } }