~juju-qa/ubuntu/xenial/juju/2.0-rc2

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/state/userpermission.go

  • Committer: Nicholas Skaggs
  • Date: 2016-09-30 14:39:30 UTC
  • mfrom: (1.8.1)
  • Revision ID: nicholas.skaggs@canonical.com-20160930143930-vwwhrefh6ftckccy
import upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
11
11
        "gopkg.in/mgo.v2/bson"
12
12
        "gopkg.in/mgo.v2/txn"
13
13
 
14
 
        "github.com/juju/juju/core/description"
 
14
        "github.com/juju/juju/permission"
15
15
)
16
16
 
17
17
// permission represents the permission a user has
18
18
// on a given scope.
19
 
type permission struct {
 
19
type userPermission struct {
20
20
        doc permissionDoc
21
21
}
22
22
 
31
31
        Access string `bson:"access"`
32
32
}
33
33
 
34
 
func stringToAccess(a string) description.Access {
35
 
        return description.Access(a)
 
34
func stringToAccess(a string) permission.Access {
 
35
        return permission.Access(a)
36
36
}
37
37
 
38
 
func accessToString(a description.Access) string {
 
38
func accessToString(a permission.Access) string {
39
39
        return string(a)
40
40
}
41
41
 
42
42
// userPermission returns a Permission for the given Subject and User.
43
 
func (st *State) userPermission(objectGlobalKey, subjectGlobalKey string) (*permission, error) {
44
 
        userPermission := &permission{}
 
43
func (st *State) userPermission(objectGlobalKey, subjectGlobalKey string) (*userPermission, error) {
 
44
        result := &userPermission{}
45
45
        permissions, closer := st.getCollection(permissionsC)
46
46
        defer closer()
47
47
 
48
48
        id := permissionID(objectGlobalKey, subjectGlobalKey)
49
 
        err := permissions.FindId(id).One(&userPermission.doc)
 
49
        err := permissions.FindId(id).One(&result.doc)
50
50
        if err == mgo.ErrNotFound {
51
51
                return nil, errors.NotFoundf("user permissions for user %q", id)
52
52
        }
53
 
        return userPermission, nil
 
53
        return result, nil
54
54
}
55
55
 
56
56
// controllerUserPermission returns a Permission for the given Subject and User.
57
 
func (st *State) controllerUserPermission(objectGlobalKey, subjectGlobalKey string) (*permission, error) {
58
 
        userPermission := &permission{}
 
57
func (st *State) controllerUserPermission(objectGlobalKey, subjectGlobalKey string) (*userPermission, error) {
 
58
        result := &userPermission{}
59
59
 
60
60
        permissions, closer := st.getCollection(permissionsC)
61
61
        defer closer()
62
62
 
63
63
        id := permissionID(objectGlobalKey, subjectGlobalKey)
64
 
        err := permissions.FindId(id).One(&userPermission.doc)
 
64
        err := permissions.FindId(id).One(&result.doc)
65
65
        if err == mgo.ErrNotFound {
66
66
                return nil, errors.NotFoundf("user permissions for user %q", id)
67
67
        }
68
 
        return userPermission, nil
 
68
        return result, nil
69
69
}
70
70
 
71
71
// isReadOnly returns whether or not the user has write access or only
72
72
// read access to the model.
73
 
func (p *permission) isReadOnly() bool {
74
 
        return stringToAccess(p.doc.Access) == description.UndefinedAccess || stringToAccess(p.doc.Access) == description.ReadAccess
 
73
func (p *userPermission) isReadOnly() bool {
 
74
        return stringToAccess(p.doc.Access) == permission.UndefinedAccess || stringToAccess(p.doc.Access) == permission.ReadAccess
75
75
}
76
76
 
77
77
// isAdmin is a convenience method that
78
 
// returns whether or not the user has description.AdminAccess.
79
 
func (p *permission) isAdmin() bool {
80
 
        return stringToAccess(p.doc.Access) == description.AdminAccess
 
78
// returns whether or not the user has permission.AdminAccess.
 
79
func (p *userPermission) isAdmin() bool {
 
80
        return stringToAccess(p.doc.Access) == permission.AdminAccess
81
81
}
82
82
 
83
83
// isReadWrite is a convenience method that
84
 
// returns whether or not the user has description.WriteAccess.
85
 
func (p *permission) isReadWrite() bool {
86
 
        return stringToAccess(p.doc.Access) == description.WriteAccess
 
84
// returns whether or not the user has permission.WriteAccess.
 
85
func (p *userPermission) isReadWrite() bool {
 
86
        return stringToAccess(p.doc.Access) == permission.WriteAccess
87
87
}
88
88
 
89
 
func (p *permission) access() description.Access {
 
89
func (p *userPermission) access() permission.Access {
90
90
        return stringToAccess(p.doc.Access)
91
91
}
92
92
 
109
109
        return fmt.Sprintf("%s#%s", objectGlobalKey, subjectGlobalKey)
110
110
}
111
111
 
112
 
func updatePermissionOp(objectGlobalKey, subjectGlobalKey string, access description.Access) txn.Op {
 
112
func updatePermissionOp(objectGlobalKey, subjectGlobalKey string, access permission.Access) txn.Op {
113
113
        return txn.Op{
114
114
                C:      permissionsC,
115
115
                Id:     permissionID(objectGlobalKey, subjectGlobalKey),
127
127
        }
128
128
 
129
129
}
130
 
func createPermissionOp(objectGlobalKey, subjectGlobalKey string, access description.Access) txn.Op {
 
130
func createPermissionOp(objectGlobalKey, subjectGlobalKey string, access permission.Access) txn.Op {
131
131
        doc := &permissionDoc{
132
132
                ID:               permissionID(objectGlobalKey, subjectGlobalKey),
133
133
                SubjectGlobalKey: subjectGlobalKey,