Skip to content

Commit 7e93f6d

Browse files
committed
Enforce individual on collaborator
1 parent 2375d8d commit 7e93f6d

File tree

14 files changed

+43
-41
lines changed

14 files changed

+43
-41
lines changed

models/error.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ type ErrUserNotExist struct {
6666
UID int64
6767
Name string
6868
KeyID int64
69-
Type int
69+
Type UserType
7070
}
7171

7272
// IsErrUserNotExist checks if an error is a ErrUserNotExist.

models/login_source.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ func LoginViaLDAP(user *User, login, password string, source *LoginSource, autoR
413413
sr := source.Cfg.(*LDAPConfig).SearchEntry(login, password, source.Type == LoginDLDAP)
414414
if sr == nil {
415415
// User not in LDAP, do nothing
416-
return nil, ErrUserNotExist{0, login, 0}
416+
return nil, ErrUserNotExist{0, login, 0, -1}
417417
}
418418

419419
if !autoRegister {
@@ -524,9 +524,9 @@ func LoginViaSMTP(user *User, login, password string, sourceID int64, cfg *SMTPC
524524
if len(cfg.AllowedDomains) > 0 {
525525
idx := strings.Index(login, "@")
526526
if idx == -1 {
527-
return nil, ErrUserNotExist{0, login, 0}
527+
return nil, ErrUserNotExist{0, login, 0, -1}
528528
} else if !com.IsSliceContainsStr(strings.Split(cfg.AllowedDomains, ","), login[idx+1:]) {
529-
return nil, ErrUserNotExist{0, login, 0}
529+
return nil, ErrUserNotExist{0, login, 0, -1}
530530
}
531531
}
532532

@@ -545,7 +545,7 @@ func LoginViaSMTP(user *User, login, password string, sourceID int64, cfg *SMTPC
545545
tperr, ok := err.(*textproto.Error)
546546
if (ok && tperr.Code == 535) ||
547547
strings.Contains(err.Error(), "Username and Password not accepted") {
548-
return nil, ErrUserNotExist{0, login, 0}
548+
return nil, ErrUserNotExist{0, login, 0, -1}
549549
}
550550
return nil, err
551551
}
@@ -585,7 +585,7 @@ func LoginViaSMTP(user *User, login, password string, sourceID int64, cfg *SMTPC
585585
func LoginViaPAM(user *User, login, password string, sourceID int64, cfg *PAMConfig, autoRegister bool) (*User, error) {
586586
if err := pam.Auth(cfg.ServiceName, login, password); err != nil {
587587
if strings.Contains(err.Error(), "Authentication failure") {
588-
return nil, ErrUserNotExist{0, login, 0}
588+
return nil, ErrUserNotExist{0, login, 0, -1}
589589
}
590590
return nil, err
591591
}
@@ -643,7 +643,7 @@ func UserSignIn(username, password string) (*User, error) {
643643
} else {
644644
trimmedUsername := strings.TrimSpace(username)
645645
if len(trimmedUsername) == 0 {
646-
return nil, ErrUserNotExist{0, username, 0}
646+
return nil, ErrUserNotExist{0, username, 0, -1}
647647
}
648648

649649
user = &User{LowerName: strings.ToLower(trimmedUsername)}
@@ -661,7 +661,7 @@ func UserSignIn(username, password string) (*User, error) {
661661
return user, nil
662662
}
663663

664-
return nil, ErrUserNotExist{user.ID, user.Name, 0}
664+
return nil, ErrUserNotExist{user.ID, user.Name, 0, -1}
665665

666666
default:
667667
var source LoginSource
@@ -694,5 +694,5 @@ func UserSignIn(username, password string) (*User, error) {
694694
log.Warn("Failed to login '%s' via '%s': %v", username, source.Name, err)
695695
}
696696

697-
return nil, ErrUserNotExist{user.ID, user.Name, 0}
697+
return nil, ErrUserNotExist{user.ID, user.Name, 0, -1}
698698
}

models/org.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ func CreateOrganization(org, owner *User) (err error) {
177177

178178
// GetOrgByName returns organization by given name.
179179
func GetOrgByName(name string) (*User, error) {
180-
return GetUserByNameAndType(name, models.UserTypeOrganization)
180+
return GetUserByNameAndType(name, UserTypeOrganization)
181181
}
182182

183183
// CountOrganizations returns number of organizations.

models/org_team.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,11 +226,14 @@ func NewTeam(t *Team) (err error) {
226226
return err
227227
}
228228

229-
has, err := x.Id(t.OrgID).Get(new(User))
229+
has, err := x.Id(t.OrgID).Get(&User{
230+
Type: UserTypeOrganization,
231+
})
232+
230233
if err != nil {
231234
return err
232235
} else if !has {
233-
return ErrOrgNotExist{t.OrgID, ""}
236+
return ErrUserNotExist{t.OrgID, "", 0, UserTypeOrganization}
234237
}
235238

236239
t.LowerName = strings.ToLower(t.Name)

models/org_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,11 @@ func TestGetOrgByName(t *testing.T) {
222222
assert.Equal(t, "user3", org.Name)
223223

224224
org, err = GetOrgByName("user2") // user2 is an individual
225-
assert.True(t, IsErrOrgNotExist(err))
225+
assert.True(t, IsErrUserNotExist(err))
226+
assert.Equal(t, UserTypeOrganization, err.(ErrUserNotExist).Type)
226227

227228
org, err = GetOrgByName("") // corner case
228-
assert.True(t, IsErrOrgNotExist(err))
229+
assert.True(t, IsErrUserNotExist(err))
229230
}
230231

231232
func TestCountOrganizations(t *testing.T) {

models/user.go

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1089,7 +1089,7 @@ func GetUserByKeyID(keyID int64) (*User, error) {
10891089
return nil, err
10901090
}
10911091
if !has {
1092-
return nil, ErrUserNotExist{0, "", keyID}
1092+
return nil, ErrUserNotExist{0, "", keyID, -1}
10931093
}
10941094
return &user, nil
10951095
}
@@ -1100,7 +1100,7 @@ func getUserByID(e Engine, id int64) (*User, error) {
11001100
if err != nil {
11011101
return nil, err
11021102
} else if !has {
1103-
return nil, ErrUserNotExist{id, "", 0}
1103+
return nil, ErrUserNotExist{id, "", 0, -1}
11041104
}
11051105
return u, nil
11061106
}
@@ -1116,43 +1116,41 @@ func GetAssigneeByID(repo *Repository, userID int64) (*User, error) {
11161116
if err != nil {
11171117
return nil, err
11181118
} else if !has {
1119-
return nil, ErrUserNotExist{userID, "", 0}
1119+
return nil, ErrUserNotExist{userID, "", 0, -1}
11201120
}
11211121
return GetUserByID(userID)
11221122
}
11231123

11241124
// GetUserByName returns user by given name.
11251125
func GetUserByName(name string) (*User, error) {
11261126
if len(name) == 0 {
1127-
return nil, ErrUserNotExist{0, name, 0}
1128-
}
1129-
u := &User{
1130-
LowerName: strings.ToLower(name),
1127+
return nil, ErrUserNotExist{0, name, 0, -1}
11311128
}
1129+
u := &User{LowerName: strings.ToLower(name)}
11321130
has, err := x.Get(u)
11331131
if err != nil {
11341132
return nil, err
11351133
} else if !has {
1136-
return nil, ErrUserNotExist{0, name, 0}
1134+
return nil, ErrUserNotExist{0, name, 0, -1}
11371135
}
11381136
return u, nil
11391137
}
11401138

11411139
// GetUserByNameAndType returns user by given name and type. //TODO add test
1142-
func GetUserByNameAndType(name string, utype models.UserType) (*User, error) {
1143-
u, err:= GetUserByName(name)
1140+
func GetUserByNameAndType(name string, utype UserType) (*User, error) {
1141+
u, err := GetUserByName(name)
11441142
if err != nil {
11451143
return nil, err
1146-
}
1147-
if(u.Type != utype){
1144+
}
1145+
if u.Type != utype {
11481146
return nil, ErrUserNotExist{0, name, 0, utype}
11491147
}
11501148
return u, nil
11511149
}
11521150

1153-
// GetIndividualUserByName returns user if is TypeIndividua by given name. //TODO add test
1151+
// GetIndividualUserByName returns user of TypeIndividual by given name. //TODO add test
11541152
func GetIndividualUserByName(name string) (*User, error) {
1155-
return GetUserByNameAndType(name, models.UserTypeIndividual)
1153+
return GetUserByNameAndType(name, UserTypeIndividual)
11561154
}
11571155

11581156
// GetUserEmailsByNames returns a list of e-mails corresponds to names.
@@ -1240,7 +1238,7 @@ func ValidateCommitsWithEmails(oldCommits *list.List) *list.List {
12401238
// GetUserByEmail returns the user object by given e-mail if exists.
12411239
func GetUserByEmail(email string) (*User, error) {
12421240
if len(email) == 0 {
1243-
return nil, ErrUserNotExist{0, email, 0}
1241+
return nil, ErrUserNotExist{0, email, 0, -1}
12441242
}
12451243

12461244
email = strings.ToLower(email)
@@ -1264,7 +1262,7 @@ func GetUserByEmail(email string) (*User, error) {
12641262
return GetUserByID(emailAddress.UID)
12651263
}
12661264

1267-
return nil, ErrUserNotExist{0, email, 0}
1265+
return nil, ErrUserNotExist{0, email, 0, -1}
12681266
}
12691267

12701268
// GetUser checks if a user already exists

models/user_mail.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ func MakeEmailPrimary(email *EmailAddress) error {
197197
if err != nil {
198198
return err
199199
} else if !has {
200-
return ErrUserNotExist{email.UID, "", 0}
200+
return ErrUserNotExist{email.UID, "", 0, -1}
201201
}
202202

203203
// Make sure the former primary email doesn't disappear.

models/user_openid.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func ToggleUserOpenIDVisibility(id int64) (err error) {
100100
// GetUserByOpenID returns the user object by given OpenID if exists.
101101
func GetUserByOpenID(uri string) (*User, error) {
102102
if len(uri) == 0 {
103-
return nil, ErrUserNotExist{0, uri, 0}
103+
return nil, ErrUserNotExist{0, uri, 0, -1}
104104
}
105105

106106
uri, err := openid.Normalize(uri)
@@ -120,5 +120,5 @@ func GetUserByOpenID(uri string) (*User, error) {
120120
return GetUserByID(oid.UID)
121121
}
122122

123-
return nil, ErrUserNotExist{0, uri, 0}
123+
return nil, ErrUserNotExist{0, uri, 0, -1}
124124
}

modules/context/org.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ func HandleOrgAssignment(ctx *Context, args ...bool) {
5050
var err error
5151
ctx.Org.Organization, err = models.GetOrgByName(orgName)
5252
if err != nil {
53-
if models.IsErrOrgNotExist(err) {
53+
if models.IsErrUserNotExist(err) {
5454
ctx.Handle(404, "GetOrgByName", err)
5555
} else {
5656
ctx.Handle(500, "GetOrgByName", err)

routers/api/v1/api.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ func orgAssignment(args ...bool) macaron.Handler {
210210
if assignOrg {
211211
ctx.Org.Organization, err = models.GetOrgByName(ctx.Params(":orgname"))
212212
if err != nil {
213-
if models.IsErrOrgNotExist(err) {
213+
if models.IsErrUserNotExist(err) {
214214
ctx.Status(404)
215215
} else {
216216
ctx.Error(500, "GetOrgByName", err)

routers/api/v1/repo/collaborators.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func IsCollaborator(ctx *context.APIContext) {
3535
ctx.Error(403, "", "User does not have push access")
3636
return
3737
}
38-
user, err := models.GetUserByName(ctx.Params(":collaborator"))
38+
user, err := models.GetIndividualUserByName(ctx.Params(":collaborator"))
3939
if err != nil {
4040
if models.IsErrUserNotExist(err) {
4141
ctx.Error(422, "", err)
@@ -62,7 +62,7 @@ func AddCollaborator(ctx *context.APIContext, form api.AddCollaboratorOption) {
6262
ctx.Error(403, "", "User does not have push access")
6363
return
6464
}
65-
collaborator, err := models.GetUserByName(ctx.Params(":collaborator"))
65+
collaborator, err := models.GetIndividualUserByName(ctx.Params(":collaborator"))
6666
if err != nil {
6767
if models.IsErrUserNotExist(err) {
6868
ctx.Error(422, "", err)
@@ -94,7 +94,7 @@ func DeleteCollaborator(ctx *context.APIContext) {
9494
return
9595
}
9696

97-
collaborator, err := models.GetUserByName(ctx.Params(":collaborator"))
97+
collaborator, err := models.GetIndividualUserByName(ctx.Params(":collaborator"))
9898
if err != nil {
9999
if models.IsErrUserNotExist(err) {
100100
ctx.Error(422, "", err)

routers/api/v1/repo/fork.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func CreateFork(ctx *context.APIContext, form api.CreateForkOption) {
5959
} else {
6060
org, err := models.GetOrgByName(*form.Organization)
6161
if err != nil {
62-
if models.IsErrOrgNotExist(err) {
62+
if models.IsErrUserNotExist(err) {
6363
ctx.Error(422, "", err)
6464
} else {
6565
ctx.Error(500, "GetOrgByName", err)

routers/api/v1/repo/repo.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ func CreateOrgRepo(ctx *context.APIContext, opt api.CreateRepoOption) {
156156

157157
org, err := models.GetOrgByName(ctx.Params(":org"))
158158
if err != nil {
159-
if models.IsErrOrgNotExist(err) {
159+
if models.IsErrUserNotExist(err) {
160160
ctx.Error(422, "", err)
161161
} else {
162162
ctx.Error(500, "GetOrgByName", err)

routers/user/home.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func getDashboardContextUser(ctx *context.Context) *models.User {
3333
// Organization.
3434
org, err := models.GetOrgByName(orgName)
3535
if err != nil {
36-
if models.IsErrOrgNotExist(err) {
36+
if models.IsErrUserNotExist(err) {
3737
ctx.Handle(404, "GetOrgByName", err)
3838
} else {
3939
ctx.Handle(500, "GetOrgByName", err)

0 commit comments

Comments
 (0)