MCPcopy Create free account
hub / github.com/gogs/gogs / HandleOrgAssignment

Function HandleOrgAssignment

internal/context/org.go:23–137  ·  view source on GitHub ↗
(c *Context, args ...bool)

Source from the content-addressed store, hash-verified

21}
22
23func HandleOrgAssignment(c *Context, args ...bool) {
24 var (
25 requireMember bool
26 requireOwner bool
27 requireTeamMember bool
28 requireTeamAdmin bool
29 )
30 if len(args) >= 1 {
31 requireMember = args[0]
32 }
33 if len(args) >= 2 {
34 requireOwner = args[1]
35 }
36 if len(args) >= 3 {
37 requireTeamMember = args[2]
38 }
39 if len(args) >= 4 {
40 requireTeamAdmin = args[3]
41 }
42
43 orgName := c.Params(":org")
44
45 var err error
46 c.Org.Organization, err = database.Handle.Users().GetByUsername(c.Req.Context(), orgName)
47 if err != nil {
48 c.NotFoundOrError(err, "get organization by name")
49 return
50 }
51 org := c.Org.Organization
52 c.Data["Org"] = org
53
54 // Force redirection when username is actually a user.
55 if !org.IsOrganization() {
56 c.Redirect("/" + org.Name)
57 return
58 }
59
60 // Admin has super access.
61 if c.IsLogged && c.User.IsAdmin {
62 c.Org.IsOwner = true
63 c.Org.IsMember = true
64 c.Org.IsTeamMember = true
65 c.Org.IsTeamAdmin = true
66 } else if c.IsLogged {
67 c.Org.IsOwner = org.IsOwnedBy(c.User.ID)
68 if c.Org.IsOwner {
69 c.Org.IsMember = true
70 c.Org.IsTeamMember = true
71 c.Org.IsTeamAdmin = true
72 } else if org.IsOrgMember(c.User.ID) {
73 c.Org.IsMember = true
74 }
75 } else {
76 // Fake data.
77 c.Data["SignedUser"] = &database.User{}
78 }
79 if (requireMember && !c.Org.IsMember) ||
80 (requireOwner && !c.Org.IsOwner) {

Callers 2

showOrgProfileFunction · 0.92
OrgAssignmentFunction · 0.85

Calls 12

GetByUsernameMethod · 0.80
UsersMethod · 0.80
IsOrganizationMethod · 0.80
RedirectMethod · 0.80
IsOrgMemberMethod · 0.80
GetTeamsMethod · 0.80
GetUserTeamsMethod · 0.80
IsOwnerTeamMethod · 0.80
NotFoundMethod · 0.65
NotFoundOrErrorMethod · 0.45
IsOwnedByMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected