OLD | NEW |
| (Empty) |
1 // Copyright 2016 The LUCI Authors. All rights reserved. | |
2 // Use of this source code is governed under the Apache License, Version 2.0 | |
3 // that can be found in the LICENSE file. | |
4 | |
5 package common | |
6 | |
7 import ( | |
8 "golang.org/x/net/context" | |
9 | |
10 "github.com/luci/luci-go/luci_config/common/cfgtypes" | |
11 "github.com/luci/luci-go/luci_config/server/cfgclient/access" | |
12 "github.com/luci/luci-go/luci_config/server/cfgclient/backend" | |
13 "github.com/luci/luci-go/server/auth" | |
14 ) | |
15 | |
16 // Helper functions for ACL checking. | |
17 | |
18 // IsAllowed checks to see if the user in the context is allowed to access | |
19 // the given project. | |
20 func IsAllowed(c context.Context, project string) (bool, error) { | |
21 // Get the project, because that's where the ACLs lie. | |
22 err := access.Check( | |
23 c, backend.AsUser, | |
24 cfgtypes.ProjectConfigSet(cfgtypes.ProjectName(project))) | |
25 switch err { | |
26 case nil: | |
27 return true, nil | |
28 case access.ErrNoAccess: | |
29 return false, nil | |
30 default: | |
31 return false, err | |
32 } | |
33 } | |
34 | |
35 // IsAllowedInternal is a shorthand for checking to see if the user is a reader | |
36 // of a magic project named "chrome". | |
37 func IsAllowedInternal(c context.Context) (bool, error) { | |
38 settings := GetSettings(c) | |
39 if settings.Buildbot.InternalReader == "" { | |
40 return false, nil | |
41 } | |
42 return auth.IsMember(c, settings.Buildbot.InternalReader) | |
43 } | |
OLD | NEW |