| @@ -12,9 +12,9 @@ import ( | |||
| ) | |||
| var signupFormSample map[string][]string = map[string][]string{ | |||
| "Name": []string{"tester"}, | |||
| "Email": []string{"user1@example.com"}, | |||
| "Passwd": []string{"12345678"}, | |||
| "Name": {"tester"}, | |||
| "Email": {"user1@example.com"}, | |||
| "Passwd": {"12345678"}, | |||
| } | |||
| func signup(t *utils.T) error { | |||
| @@ -67,8 +67,10 @@ func TestGetParticipantsByIssueID(t *testing.T) { | |||
| checkPartecipants := func(issueID int64, userIDs []int) { | |||
| partecipants, err := GetParticipantsByIssueID(issueID) | |||
| if assert.NoError(t, err) { | |||
| partecipantsIDs := make([]int,len(partecipants)) | |||
| for i,u := range partecipants { partecipantsIDs[i] = int(u.ID) } | |||
| partecipantsIDs := make([]int, len(partecipants)) | |||
| for i, u := range partecipants { | |||
| partecipantsIDs[i] = int(u.ID) | |||
| } | |||
| sort.Ints(partecipantsIDs) | |||
| sort.Ints(userIDs) | |||
| assert.Equal(t, userIDs, partecipantsIDs) | |||
| @@ -79,6 +81,6 @@ func TestGetParticipantsByIssueID(t *testing.T) { | |||
| // User 1 is issue1 poster (see fixtures/issue.yml) | |||
| // User 2 only labeled issue1 (see fixtures/comment.yml) | |||
| // Users 3 and 5 made actual comments (see fixtures/comment.yml) | |||
| checkPartecipants(1, []int{3,5}) | |||
| checkPartecipants(1, []int{3, 5}) | |||
| } | |||
| @@ -12,12 +12,11 @@ import ( | |||
| // UserOpenID is the list of all OpenID identities of a user. | |||
| type UserOpenID struct { | |||
| ID int64 `xorm:"pk autoincr"` | |||
| UID int64 `xorm:"INDEX NOT NULL"` | |||
| URI string `xorm:"UNIQUE NOT NULL"` | |||
| ID int64 `xorm:"pk autoincr"` | |||
| UID int64 `xorm:"INDEX NOT NULL"` | |||
| URI string `xorm:"UNIQUE NOT NULL"` | |||
| } | |||
| func addUserOpenID(x *xorm.Engine) error { | |||
| if err := x.Sync2(new(UserOpenID)); err != nil { | |||
| return fmt.Errorf("Sync2: %v", err) | |||
| @@ -143,7 +143,7 @@ func (t *Team) removeRepository(e Engine, repo *Repository, recalculate bool) (e | |||
| if err != nil { | |||
| return fmt.Errorf("getTeamUsersByTeamID: %v", err) | |||
| } | |||
| for _, teamUser:= range teamUsers { | |||
| for _, teamUser := range teamUsers { | |||
| has, err := hasAccess(e, teamUser.UID, repo, AccessModeRead) | |||
| if err != nil { | |||
| return err | |||
| @@ -68,4 +68,3 @@ func UnfollowUser(userID, followID int64) (err error) { | |||
| } | |||
| return sess.Commit() | |||
| } | |||
| @@ -18,10 +18,10 @@ var ( | |||
| // UserOpenID is the list of all OpenID identities of a user. | |||
| type UserOpenID struct { | |||
| ID int64 `xorm:"pk autoincr"` | |||
| UID int64 `xorm:"INDEX NOT NULL"` | |||
| URI string `xorm:"UNIQUE NOT NULL"` | |||
| Show bool `xorm:"DEFAULT false"` | |||
| ID int64 `xorm:"pk autoincr"` | |||
| UID int64 `xorm:"INDEX NOT NULL"` | |||
| URI string `xorm:"UNIQUE NOT NULL"` | |||
| Show bool `xorm:"DEFAULT false"` | |||
| } | |||
| // GetUserOpenIDs returns all openid addresses that belongs to given user. | |||
| @@ -122,4 +122,3 @@ func GetUserByOpenID(uri string) (*User, error) { | |||
| return nil, ErrUserNotExist{0, uri, 0} | |||
| } | |||
| @@ -52,14 +52,14 @@ func TestGetUserByOpenID(t *testing.T) { | |||
| func TestToggleUserOpenIDVisibility(t *testing.T) { | |||
| assert.NoError(t, PrepareTestDatabase()) | |||
| oids, err := GetUserOpenIDs(int64(2)) | |||
| if ! assert.NoError(t, err) { | |||
| if !assert.NoError(t, err) { | |||
| return | |||
| } | |||
| assert.Len(t, oids, 1) | |||
| assert.True(t, oids[0].Show) | |||
| err = ToggleUserOpenIDVisibility(oids[0].ID) | |||
| if ! assert.NoError(t, err) { | |||
| if !assert.NoError(t, err) { | |||
| return | |||
| } | |||
| @@ -69,12 +69,12 @@ func TestToggleUserOpenIDVisibility(t *testing.T) { | |||
| assert.False(t, oids[0].Show) | |||
| } | |||
| err = ToggleUserOpenIDVisibility(oids[0].ID) | |||
| if ! assert.NoError(t, err) { | |||
| if !assert.NoError(t, err) { | |||
| return | |||
| } | |||
| oids, err = GetUserOpenIDs(int64(2)) | |||
| if ! assert.NoError(t, err) { | |||
| if !assert.NoError(t, err) { | |||
| return | |||
| } | |||
| assert.Len(t, oids, 1) | |||
| @@ -18,7 +18,7 @@ type timedDiscoveredInfo struct { | |||
| type timedDiscoveryCache struct { | |||
| cache map[string]timedDiscoveredInfo | |||
| ttl time.Duration | |||
| ttl time.Duration | |||
| mutex *sync.Mutex | |||
| } | |||
| @@ -56,4 +56,3 @@ func (s *timedDiscoveryCache) Get(id string) openid.DiscoveredInfo { | |||
| } | |||
| return nil | |||
| } | |||
| @@ -9,7 +9,8 @@ import ( | |||
| "time" | |||
| ) | |||
| type testDiscoveredInfo struct {} | |||
| type testDiscoveredInfo struct{} | |||
| func (s *testDiscoveredInfo) ClaimedID() string { | |||
| return "claimedID" | |||
| } | |||
| @@ -21,7 +22,7 @@ func (s *testDiscoveredInfo) OpLocalID() string { | |||
| } | |||
| func TestTimedDiscoveryCache(t *testing.T) { | |||
| dc := newTimedDiscoveryCache(1*time.Second) | |||
| dc := newTimedDiscoveryCache(1 * time.Second) | |||
| // Put some initial values | |||
| dc.Put("foo", &testDiscoveredInfo{}) //openid.opEndpoint: "a", openid.opLocalID: "b", openid.claimedID: "c"}) | |||
| @@ -17,8 +17,7 @@ import ( | |||
| // least | |||
| // the nonceStore between them. | |||
| var nonceStore = openid.NewSimpleNonceStore() | |||
| var discoveryCache = newTimedDiscoveryCache(24*time.Hour) | |||
| var discoveryCache = newTimedDiscoveryCache(24 * time.Hour) | |||
| // Verify handles response from OpenID provider | |||
| func Verify(fullURL string) (id string, err error) { | |||
| @@ -34,4 +33,3 @@ func Normalize(url string) (id string, err error) { | |||
| func RedirectURL(id, callbackURL, realm string) (string, error) { | |||
| return openid.RedirectURL(id, callbackURL, realm) | |||
| } | |||
| @@ -155,7 +155,7 @@ func (f *ChangePasswordForm) Validate(ctx *macaron.Context, errs binding.Errors) | |||
| // AddOpenIDForm is for changing openid uri | |||
| type AddOpenIDForm struct { | |||
| Openid string `binding:"Required;MaxSize(256)"` | |||
| Openid string `binding:"Required;MaxSize(256)"` | |||
| } | |||
| // Validate validates the fields | |||
| @@ -9,10 +9,9 @@ import ( | |||
| "gopkg.in/macaron.v1" | |||
| ) | |||
| // SignInOpenIDForm form for signing in with OpenID | |||
| type SignInOpenIDForm struct { | |||
| Openid string `binding:"Required;MaxSize(256)"` | |||
| Openid string `binding:"Required;MaxSize(256)"` | |||
| Remember bool | |||
| } | |||
| @@ -42,4 +41,3 @@ type ConnectOpenIDForm struct { | |||
| func (f *ConnectOpenIDForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { | |||
| return validate(errs, ctx.Data, f, ctx.Locale) | |||
| } | |||
| @@ -762,14 +762,14 @@ please consider changing to GITEA_CUSTOM`) | |||
| EnableOpenIDSignIn = sec.Key("ENABLE_OPENID_SIGNIN").MustBool(true) | |||
| EnableOpenIDSignUp = sec.Key("ENABLE_OPENID_SIGNUP").MustBool(true) | |||
| pats := sec.Key("WHITELISTED_URIS").Strings(" ") | |||
| if ( len(pats) != 0 ) { | |||
| if len(pats) != 0 { | |||
| OpenIDWhitelist = make([]*regexp.Regexp, len(pats)) | |||
| for i, p := range pats { | |||
| OpenIDWhitelist[i] = regexp.MustCompilePOSIX(p) | |||
| } | |||
| } | |||
| pats = sec.Key("BLACKLISTED_URIS").Strings(" ") | |||
| if ( len(pats) != 0 ) { | |||
| if len(pats) != 0 { | |||
| OpenIDBlacklist = make([]*regexp.Regexp, len(pats)) | |||
| for i, p := range pats { | |||
| OpenIDBlacklist[i] = regexp.MustCompilePOSIX(p) | |||
| @@ -102,23 +102,24 @@ func SignInOpenIDPost(ctx *context.Context, form auth.SignInOpenIDForm) { | |||
| id, err := openid.Normalize(form.Openid) | |||
| if err != nil { | |||
| ctx.RenderWithErr(err.Error(), tplSignInOpenID, &form) | |||
| return; | |||
| return | |||
| } | |||
| form.Openid = id | |||
| log.Trace("OpenID uri: " + id) | |||
| err = allowedOpenIDURI(id); if err != nil { | |||
| err = allowedOpenIDURI(id) | |||
| if err != nil { | |||
| ctx.RenderWithErr(err.Error(), tplSignInOpenID, &form) | |||
| return; | |||
| return | |||
| } | |||
| redirectTo := setting.AppURL + "user/login/openid" | |||
| url, err := openid.RedirectURL(id, redirectTo, setting.AppURL) | |||
| if err != nil { | |||
| if err != nil { | |||
| ctx.RenderWithErr(err.Error(), tplSignInOpenID, &form) | |||
| return; | |||
| } | |||
| return | |||
| } | |||
| // Request optional nickname and email info | |||
| // NOTE: change to `openid.sreg.required` to require it | |||
| @@ -134,10 +135,10 @@ func SignInOpenIDPost(ctx *context.Context, form auth.SignInOpenIDForm) { | |||
| // signInOpenIDVerify handles response from OpenID provider | |||
| func signInOpenIDVerify(ctx *context.Context) { | |||
| log.Trace("Incoming call to: " + ctx.Req.Request.URL.String()) | |||
| log.Trace("Incoming call to: " + ctx.Req.Request.URL.String()) | |||
| fullURL := setting.AppURL + ctx.Req.Request.URL.String()[1:] | |||
| log.Trace("Full URL: " + fullURL) | |||
| fullURL := setting.AppURL + ctx.Req.Request.URL.String()[1:] | |||
| log.Trace("Full URL: " + fullURL) | |||
| var id, err = openid.Verify(fullURL) | |||
| if err != nil { | |||
| @@ -154,7 +155,7 @@ func signInOpenIDVerify(ctx *context.Context) { | |||
| u, _ := models.GetUserByOpenID(id) | |||
| if err != nil { | |||
| if ! models.IsErrUserNotExist(err) { | |||
| if !models.IsErrUserNotExist(err) { | |||
| ctx.RenderWithErr(err.Error(), tplSignInOpenID, &auth.SignInOpenIDForm{ | |||
| Openid: id, | |||
| }) | |||
| @@ -188,12 +189,12 @@ func signInOpenIDVerify(ctx *context.Context) { | |||
| email := values.Get("openid.sreg.email") | |||
| nickname := values.Get("openid.sreg.nickname") | |||
| log.Trace("User has email=" + email + " and nickname=" + nickname) | |||
| log.Trace("User has email=" + email + " and nickname=" + nickname) | |||
| if email != "" { | |||
| u, _ = models.GetUserByEmail(email) | |||
| if err != nil { | |||
| if ! models.IsErrUserNotExist(err) { | |||
| if !models.IsErrUserNotExist(err) { | |||
| ctx.RenderWithErr(err.Error(), tplSignInOpenID, &auth.SignInOpenIDForm{ | |||
| Openid: id, | |||
| }) | |||
| @@ -208,7 +209,7 @@ func signInOpenIDVerify(ctx *context.Context) { | |||
| if u == nil && nickname != "" { | |||
| u, _ = models.GetUserByName(nickname) | |||
| if err != nil { | |||
| if ! models.IsErrUserNotExist(err) { | |||
| if !models.IsErrUserNotExist(err) { | |||
| ctx.RenderWithErr(err.Error(), tplSignInOpenID, &auth.SignInOpenIDForm{ | |||
| Openid: id, | |||
| }) | |||
| @@ -230,7 +231,7 @@ func signInOpenIDVerify(ctx *context.Context) { | |||
| ctx.Session.Set("openid_determined_username", nickname) | |||
| if u != nil || ! setting.EnableOpenIDSignUp { | |||
| if u != nil || !setting.EnableOpenIDSignUp { | |||
| ctx.Redirect(setting.AppSubURL + "/user/openid/connect") | |||
| } else { | |||
| ctx.Redirect(setting.AppSubURL + "/user/openid/register") | |||
| @@ -280,7 +281,7 @@ func ConnectOpenIDPost(ctx *context.Context, form auth.ConnectOpenIDForm) { | |||
| } | |||
| // add OpenID for the user | |||
| userOID := &models.UserOpenID{UID:u.ID, URI:oid} | |||
| userOID := &models.UserOpenID{UID: u.ID, URI: oid} | |||
| if err = models.AddUserOpenID(userOID); err != nil { | |||
| if models.IsErrOpenIDAlreadyUsed(err) { | |||
| ctx.RenderWithErr(ctx.Tr("form.openid_been_used", oid), tplConnectOID, &form) | |||
| @@ -299,7 +300,7 @@ func ConnectOpenIDPost(ctx *context.Context, form auth.ConnectOpenIDForm) { | |||
| // RegisterOpenID shows a form to create a new user authenticated via an OpenID URI | |||
| func RegisterOpenID(ctx *context.Context) { | |||
| if ! setting.EnableOpenIDSignUp { | |||
| if !setting.EnableOpenIDSignUp { | |||
| ctx.Error(403) | |||
| return | |||
| } | |||
| @@ -327,7 +328,7 @@ func RegisterOpenID(ctx *context.Context) { | |||
| // RegisterOpenIDPost handles submission of a form to create a new user authenticated via an OpenID URI | |||
| func RegisterOpenIDPost(ctx *context.Context, cpt *captcha.Captcha, form auth.SignUpOpenIDForm) { | |||
| if ! setting.EnableOpenIDSignUp { | |||
| if !setting.EnableOpenIDSignUp { | |||
| ctx.Error(403) | |||
| return | |||
| } | |||
| @@ -351,7 +352,9 @@ func RegisterOpenIDPost(ctx *context.Context, cpt *captcha.Captcha, form auth.Si | |||
| } | |||
| len := setting.MinPasswordLength | |||
| if len < 256 { len = 256 } | |||
| if len < 256 { | |||
| len = 256 | |||
| } | |||
| password, err := base.GetRandomString(len) | |||
| if err != nil { | |||
| ctx.RenderWithErr(err.Error(), tplSignUpOID, form) | |||
| @@ -387,7 +390,7 @@ func RegisterOpenIDPost(ctx *context.Context, cpt *captcha.Captcha, form auth.Si | |||
| log.Trace("Account created: %s", u.Name) | |||
| // add OpenID for the user | |||
| userOID := &models.UserOpenID{UID:u.ID, URI:oid} | |||
| userOID := &models.UserOpenID{UID: u.ID, URI: oid} | |||
| if err = models.AddUserOpenID(userOID); err != nil { | |||
| if models.IsErrOpenIDAlreadyUsed(err) { | |||
| ctx.RenderWithErr(ctx.Tr("form.openid_been_used", oid), tplSignUpOID, &form) | |||
| @@ -5,7 +5,6 @@ | |||
| package user | |||
| import ( | |||
| "code.gitea.io/gitea/models" | |||
| "code.gitea.io/gitea/modules/auth" | |||
| "code.gitea.io/gitea/modules/auth/openid" | |||
| @@ -16,7 +15,7 @@ import ( | |||
| ) | |||
| const ( | |||
| tplSettingsOpenID base.TplName = "user/settings/openid" | |||
| tplSettingsOpenID base.TplName = "user/settings/openid" | |||
| ) | |||
| // SettingsOpenID renders change user's openid page | |||
| @@ -64,10 +63,10 @@ func SettingsOpenIDPost(ctx *context.Context, form auth.AddOpenIDForm) { | |||
| id, err := openid.Normalize(form.Openid) | |||
| if err != nil { | |||
| ctx.RenderWithErr(err.Error(), tplSettingsOpenID, &form) | |||
| return; | |||
| return | |||
| } | |||
| form.Openid = id | |||
| log.Trace("Normalized id: " + id) | |||
| log.Trace("Normalized id: " + id) | |||
| oids, err := models.GetUserOpenIDs(ctx.User.ID) | |||
| if err != nil { | |||
| @@ -84,21 +83,20 @@ func SettingsOpenIDPost(ctx *context.Context, form auth.AddOpenIDForm) { | |||
| } | |||
| } | |||
| redirectTo := setting.AppURL + "user/settings/openid" | |||
| url, err := openid.RedirectURL(id, redirectTo, setting.AppURL) | |||
| if err != nil { | |||
| if err != nil { | |||
| ctx.RenderWithErr(err.Error(), tplSettingsOpenID, &form) | |||
| return; | |||
| } | |||
| return | |||
| } | |||
| ctx.Redirect(url) | |||
| } | |||
| func settingsOpenIDVerify(ctx *context.Context) { | |||
| log.Trace("Incoming call to: " + ctx.Req.Request.URL.String()) | |||
| log.Trace("Incoming call to: " + ctx.Req.Request.URL.String()) | |||
| fullURL := setting.AppURL + ctx.Req.Request.URL.String()[1:] | |||
| log.Trace("Full URL: " + fullURL) | |||
| fullURL := setting.AppURL + ctx.Req.Request.URL.String()[1:] | |||
| log.Trace("Full URL: " + fullURL) | |||
| oids, err := models.GetUserOpenIDs(ctx.User.ID) | |||
| if err != nil { | |||
| @@ -117,10 +115,10 @@ func settingsOpenIDVerify(ctx *context.Context) { | |||
| log.Trace("Verified ID: " + id) | |||
| oid := &models.UserOpenID{UID:ctx.User.ID, URI:id} | |||
| oid := &models.UserOpenID{UID: ctx.User.ID, URI: id} | |||
| if err = models.AddUserOpenID(oid); err != nil { | |||
| if models.IsErrOpenIDAlreadyUsed(err) { | |||
| ctx.RenderWithErr(ctx.Tr("form.openid_been_used", id), tplSettingsOpenID, &auth.AddOpenIDForm{ Openid: id }) | |||
| ctx.RenderWithErr(ctx.Tr("form.openid_been_used", id), tplSettingsOpenID, &auth.AddOpenIDForm{Openid: id}) | |||
| return | |||
| } | |||
| ctx.Handle(500, "AddUserOpenID", err) | |||
| @@ -155,4 +153,3 @@ func ToggleOpenIDVisibility(ctx *context.Context) { | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings/openid") | |||
| } | |||