func createUser(w http.ResponseWriter, r *http.Request) error { registrationEnabled, _ := config.GetBool("auth:user-registration") if !registrationEnabled { token := r.Header.Get("Authorization") t, err := app.AuthScheme.Auth(token) if err != nil { return createDisabledErr } user, err := t.User() if err != nil { return createDisabledErr } if !user.IsAdmin() { return createDisabledErr } } var u auth.User err := json.NewDecoder(r.Body).Decode(&u) if err != nil { return &errors.HTTP{Code: http.StatusBadRequest, Message: err.Error()} } _, err = app.AuthScheme.Create(&u) if err != nil { return handleAuthError(err) } err = u.CreateOnGandalf() if err != nil { return err } rec.Log(u.Email, "create-user") w.WriteHeader(http.StatusCreated) return nil }
func (c *DBTokenCache) PutToken(t *goauth2.Token) error { if t.AccessToken == "" { return ErrEmptyAccessToken } var email string if t.Extra == nil || t.Extra["email"] == "" { conf, err := c.scheme.loadConfig() if err != nil { return err } transport := &goauth2.Transport{Config: &conf} transport.Token = t client := transport.Client() response, err := client.Get(c.scheme.InfoUrl) if err != nil { return err } email, err = c.scheme.Parser.Parse(response) if email == "" { return ErrEmptyUserEmail } _, err = auth.GetUserByEmail(email) if err != nil { if err != auth.ErrUserNotFound { return err } registrationEnabled, _ := config.GetBool("auth:user-registration") if !registrationEnabled { return err } user := auth.User{Email: email} err := user.Create() if err != nil { return err } err = user.CreateOnGandalf() if err != nil { return err } } t.Extra = make(map[string]string) t.Extra["email"] = email } return makeToken(t).save() }
func createUser(w http.ResponseWriter, r *http.Request) error { var u auth.User err := json.NewDecoder(r.Body).Decode(&u) if err != nil { return &errors.HTTP{Code: http.StatusBadRequest, Message: err.Error()} } _, err = app.AuthScheme.Create(&u) if err != nil { return handleAuthError(err) } err = u.CreateOnGandalf() if err != nil { return err } rec.Log(u.Email, "create-user") w.WriteHeader(http.StatusCreated) return nil }