Skip to content

Commit a70073e

Browse files
authored
Merge pull request #1904 from ethantkoenig/fix/org_api
Bug fixes for org member API
2 parents 815715e + f388423 commit a70073e

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

routers/api/v1/org/member.go

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ func listMembers(ctx *context.APIContext, publicOnly bool) {
5353

5454
// ListMembers list an organization's members
5555
func ListMembers(ctx *context.APIContext) {
56-
listMembers(ctx, !ctx.Org.Organization.IsOrgMember(ctx.User.ID))
56+
publicOnly := ctx.User == nil || !ctx.Org.Organization.IsOrgMember(ctx.User.ID)
57+
listMembers(ctx, publicOnly)
5758
}
5859

5960
// ListPublicMembers list an organization's public members
@@ -63,27 +64,31 @@ func ListPublicMembers(ctx *context.APIContext) {
6364

6465
// IsMember check if a user is a member of an organization
6566
func IsMember(ctx *context.APIContext) {
66-
org := ctx.Org.Organization
67-
requester := ctx.User
6867
userToCheck := user.GetUserByParams(ctx)
69-
if org.IsOrgMember(requester.ID) {
70-
if org.IsOrgMember(userToCheck.ID) {
68+
if ctx.Written() {
69+
return
70+
}
71+
if ctx.User != nil && ctx.Org.Organization.IsOrgMember(ctx.User.ID) {
72+
if ctx.Org.Organization.IsOrgMember(userToCheck.ID) {
7173
ctx.Status(204)
7274
} else {
7375
ctx.Status(404)
7476
}
75-
} else if requester.ID == userToCheck.ID {
77+
} else if ctx.User != nil && ctx.User.ID == userToCheck.ID {
7678
ctx.Status(404)
7779
} else {
7880
redirectURL := fmt.Sprintf("%sapi/v1/orgs/%s/public_members/%s",
79-
setting.AppURL, org.Name, userToCheck.Name)
81+
setting.AppURL, ctx.Org.Organization.Name, userToCheck.Name)
8082
ctx.Redirect(redirectURL, 302)
8183
}
8284
}
8385

8486
// IsPublicMember check if a user is a public member of an organization
8587
func IsPublicMember(ctx *context.APIContext) {
8688
userToCheck := user.GetUserByParams(ctx)
89+
if ctx.Written() {
90+
return
91+
}
8792
if userToCheck.IsPublicMember(ctx.Org.Organization.ID) {
8893
ctx.Status(204)
8994
} else {
@@ -94,6 +99,9 @@ func IsPublicMember(ctx *context.APIContext) {
9499
// PublicizeMember make a member's membership public
95100
func PublicizeMember(ctx *context.APIContext) {
96101
userToPublicize := user.GetUserByParams(ctx)
102+
if ctx.Written() {
103+
return
104+
}
97105
if userToPublicize.ID != ctx.User.ID {
98106
ctx.Error(403, "", "Cannot publicize another member")
99107
return
@@ -109,6 +117,9 @@ func PublicizeMember(ctx *context.APIContext) {
109117
// ConcealMember make a member's membership not public
110118
func ConcealMember(ctx *context.APIContext) {
111119
userToConceal := user.GetUserByParams(ctx)
120+
if ctx.Written() {
121+
return
122+
}
112123
if userToConceal.ID != ctx.User.ID {
113124
ctx.Error(403, "", "Cannot conceal another member")
114125
return
@@ -123,9 +134,11 @@ func ConcealMember(ctx *context.APIContext) {
123134

124135
// DeleteMember remove a member from an organization
125136
func DeleteMember(ctx *context.APIContext) {
126-
org := ctx.Org.Organization
127-
memberID := user.GetUserByParams(ctx).ID
128-
if err := org.RemoveMember(memberID); err != nil {
137+
member := user.GetUserByParams(ctx)
138+
if ctx.Written() {
139+
return
140+
}
141+
if err := ctx.Org.Organization.RemoveMember(member.ID); err != nil {
129142
ctx.Error(500, "RemoveMember", err)
130143
}
131144
ctx.Status(204)

0 commit comments

Comments
 (0)