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

Method AccessMode

internal/database/permissions.go:75–103  ·  view source on GitHub ↗

AccessMode returns the access mode of given user has to the repository.

(ctx context.Context, userID, repoID int64, opts AccessModeOptions)

Source from the content-addressed store, hash-verified

73
74// AccessMode returns the access mode of given user has to the repository.
75func (s *PermissionsStore) AccessMode(ctx context.Context, userID, repoID int64, opts AccessModeOptions) (mode AccessMode) {
76 if repoID <= 0 {
77 return AccessModeNone
78 }
79
80 // Everyone has read access to public repository.
81 if !opts.Private {
82 mode = AccessModeRead
83 }
84
85 // Anonymous user gets the default access.
86 if userID <= 0 {
87 return mode
88 }
89
90 if userID == opts.OwnerID {
91 return AccessModeOwner
92 }
93
94 access := new(Access)
95 err := s.db.WithContext(ctx).Where("user_id = ? AND repo_id = ?", userID, repoID).First(access).Error
96 if err != nil {
97 if !errors.Is(err, gorm.ErrRecordNotFound) {
98 log.Error("Failed to get access [user_id: %d, repo_id: %d]: %v", userID, repoID, err)
99 }
100 return mode
101 }
102 return access.Mode
103}
104
105// Authorize returns true if the user has as good as desired access mode to the
106// repository.

Callers 7

AuthorizeMethod · 0.95
permsAccessModeFunction · 0.80
APIFormatLegacyMethod · 0.80
RepoAssignmentFunction · 0.80
runServFunction · 0.80
repoAssignmentFunction · 0.80
ListForksFunction · 0.80

Calls 2

WhereMethod · 0.80
ErrorMethod · 0.45

Tested by 1

permsAccessModeFunction · 0.64