Skip to content

Commit 0d45325

Browse files
committed
Add more permission values for 4.3.x
1 parent 7d946b9 commit 0d45325

File tree

3 files changed

+95
-19
lines changed

3 files changed

+95
-19
lines changed

irods/fs/collection.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -325,14 +325,14 @@ func ListCollectionAccesses(conn *connection.IRODSConnection, path string) ([]*t
325325
Path: path,
326326
UserName: "",
327327
UserZone: "",
328-
AccessLevel: types.IRODSAccessLevelNone,
328+
AccessLevel: types.IRODSAccessLevelNull,
329329
UserType: types.IRODSUserRodsUser,
330330
}
331331
}
332332

333333
switch sqlResult.AttributeIndex {
334334
case int(common.ICAT_COLUMN_COLL_ACCESS_NAME):
335-
pagenatedAccesses[row].AccessLevel = types.IRODSAccessLevelType(value)
335+
pagenatedAccesses[row].AccessLevel = types.GetIRODSAccessLevelType(value)
336336
case int(common.ICAT_COLUMN_USER_TYPE):
337337
pagenatedAccesses[row].UserType = types.IRODSUserType(value)
338338
case int(common.ICAT_COLUMN_USER_NAME):
@@ -426,7 +426,7 @@ func ListAccessesForSubCollections(conn *connection.IRODSConnection, path string
426426
Path: "",
427427
UserName: "",
428428
UserZone: "",
429-
AccessLevel: types.IRODSAccessLevelNone,
429+
AccessLevel: types.IRODSAccessLevelNull,
430430
UserType: types.IRODSUserRodsUser,
431431
}
432432
}
@@ -435,7 +435,7 @@ func ListAccessesForSubCollections(conn *connection.IRODSConnection, path string
435435
case int(common.ICAT_COLUMN_COLL_NAME):
436436
pagenatedAccesses[row].Path = value
437437
case int(common.ICAT_COLUMN_COLL_ACCESS_NAME):
438-
pagenatedAccesses[row].AccessLevel = types.IRODSAccessLevelType(value)
438+
pagenatedAccesses[row].AccessLevel = types.GetIRODSAccessLevelType(value)
439439
case int(common.ICAT_COLUMN_USER_TYPE):
440440
pagenatedAccesses[row].UserType = types.IRODSUserType(value)
441441
case int(common.ICAT_COLUMN_USER_NAME):

irods/fs/data_object.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1008,14 +1008,14 @@ func ListDataObjectAccesses(conn *connection.IRODSConnection, collection *types.
10081008
Path: util.MakeIRODSPath(collection.Path, filename),
10091009
UserName: "",
10101010
UserZone: "",
1011-
AccessLevel: types.IRODSAccessLevelNone,
1011+
AccessLevel: types.IRODSAccessLevelNull,
10121012
UserType: types.IRODSUserRodsUser,
10131013
}
10141014
}
10151015

10161016
switch sqlResult.AttributeIndex {
10171017
case int(common.ICAT_COLUMN_DATA_ACCESS_NAME):
1018-
pagenatedAccesses[row].AccessLevel = types.IRODSAccessLevelType(value)
1018+
pagenatedAccesses[row].AccessLevel = types.GetIRODSAccessLevelType(value)
10191019
case int(common.ICAT_COLUMN_USER_TYPE):
10201020
pagenatedAccesses[row].UserType = types.IRODSUserType(value)
10211021
case int(common.ICAT_COLUMN_USER_NAME):
@@ -1109,7 +1109,7 @@ func ListAccessesForDataObjects(conn *connection.IRODSConnection, collection *ty
11091109
Path: "",
11101110
UserName: "",
11111111
UserZone: "",
1112-
AccessLevel: types.IRODSAccessLevelNone,
1112+
AccessLevel: types.IRODSAccessLevelNull,
11131113
UserType: types.IRODSUserRodsUser,
11141114
}
11151115
}
@@ -1118,7 +1118,7 @@ func ListAccessesForDataObjects(conn *connection.IRODSConnection, collection *ty
11181118
case int(common.ICAT_COLUMN_DATA_NAME):
11191119
pagenatedAccesses[row].Path = util.MakeIRODSPath(collection.Path, value)
11201120
case int(common.ICAT_COLUMN_DATA_ACCESS_NAME):
1121-
pagenatedAccesses[row].AccessLevel = types.IRODSAccessLevelType(value)
1121+
pagenatedAccesses[row].AccessLevel = types.GetIRODSAccessLevelType(value)
11221122
case int(common.ICAT_COLUMN_USER_TYPE):
11231123
pagenatedAccesses[row].UserType = types.IRODSUserType(value)
11241124
case int(common.ICAT_COLUMN_USER_NAME):

irods/types/access.go

Lines changed: 87 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,106 @@
11
package types
22

3-
import "fmt"
3+
import (
4+
"fmt"
5+
"strings"
6+
)
47

58
// IRODSAccessLevelType is a type for access level
69
type IRODSAccessLevelType string
710

811
const (
12+
// IRODSAccessLevelNull is for null access
13+
IRODSAccessLevelNull IRODSAccessLevelType = "null"
14+
// IRODSAccessLevelExecute is for execute access
15+
IRODSAccessLevelExecute IRODSAccessLevelType = "execute"
16+
// IRODSAccessLevelReadAnnotation is for read annotation access
17+
IRODSAccessLevelReadAnnotation IRODSAccessLevelType = "read_annotation"
18+
// IRODSAccessLevelReadSystemMetadata is for read system metadata access
19+
IRODSAccessLevelReadSystemMetadata IRODSAccessLevelType = "read_system_metadata"
20+
// IRODSAccessLevelReadMetadata is for read metadata access
21+
IRODSAccessLevelReadMetadata IRODSAccessLevelType = "read_metadata"
22+
// IRODSAccessLevelReadObject is for read object access
23+
IRODSAccessLevelReadObject IRODSAccessLevelType = "read_object"
24+
// IRODSAccessLevelWriteAnnotation is for write annotation access
25+
IRODSAccessLevelWriteAnnotation IRODSAccessLevelType = "write_annotation"
26+
// IRODSAccessLevelCreateMetadata is for create metadata access
27+
IRODSAccessLevelCreateMetadata IRODSAccessLevelType = "create_metadata"
28+
// IRODSAccessLevelModifyMetadata is for modify metadata access
29+
IRODSAccessLevelModifyMetadata IRODSAccessLevelType = "modify_metadata"
30+
// IRODSAccessLevelDeleteMetadata is for delete metadata access
31+
IRODSAccessLevelDeleteMetadata IRODSAccessLevelType = "delete_metadata"
32+
// IRODSAccessLevelAdministerObject is for administer object access
33+
IRODSAccessLevelAdministerObject IRODSAccessLevelType = "administer_object"
34+
// IRODSAccessLevelCreateObject is for create object access
35+
IRODSAccessLevelCreateObject IRODSAccessLevelType = "create_object"
36+
// IRODSAccessLevelModifyObject is for modify object access
37+
IRODSAccessLevelModifyObject IRODSAccessLevelType = "modify_object"
38+
// IRODSAccessLevelDeleteObject is for delete object access
39+
IRODSAccessLevelDeleteObject IRODSAccessLevelType = "delete_object"
40+
// IRODSAccessLevelCreateToken is for create token access
41+
IRODSAccessLevelCreateToken IRODSAccessLevelType = "create_token"
42+
// IRODSAccessLevelDeleteToken is for delete token access
43+
IRODSAccessLevelDeleteToken IRODSAccessLevelType = "delete_token"
44+
// IRODSAccessLevelCurate is for curate access
45+
IRODSAccessLevelCurate IRODSAccessLevelType = "curate"
946
// IRODSAccessLevelOwner is for owner access
1047
IRODSAccessLevelOwner IRODSAccessLevelType = "own"
11-
// IRODSAccessLevelWrite is for write access
12-
IRODSAccessLevelWrite IRODSAccessLevelType = "modify object"
13-
// IRODSAccessLevelRead is for read access
14-
IRODSAccessLevelRead IRODSAccessLevelType = "read object"
15-
// IRODSAccessLevelNone is for no access
16-
IRODSAccessLevelNone IRODSAccessLevelType = ""
1748
)
1849

50+
func GetIRODSAccessLevelType(accessLevelType string) IRODSAccessLevelType {
51+
canonical := strings.ToLower(accessLevelType)
52+
canonical = strings.TrimSpace(canonical)
53+
canonical = strings.ReplaceAll(canonical, " ", "_")
54+
55+
switch canonical {
56+
case string(IRODSAccessLevelExecute):
57+
return IRODSAccessLevelExecute
58+
case string(IRODSAccessLevelReadAnnotation):
59+
return IRODSAccessLevelReadAnnotation
60+
case string(IRODSAccessLevelReadSystemMetadata):
61+
return IRODSAccessLevelReadSystemMetadata
62+
case string(IRODSAccessLevelReadMetadata):
63+
return IRODSAccessLevelReadMetadata
64+
case string(IRODSAccessLevelReadObject), "read":
65+
return IRODSAccessLevelReadObject
66+
case string(IRODSAccessLevelWriteAnnotation):
67+
return IRODSAccessLevelWriteAnnotation
68+
case string(IRODSAccessLevelCreateMetadata):
69+
return IRODSAccessLevelCreateMetadata
70+
case string(IRODSAccessLevelModifyMetadata):
71+
return IRODSAccessLevelModifyMetadata
72+
case string(IRODSAccessLevelDeleteMetadata):
73+
return IRODSAccessLevelDeleteMetadata
74+
case string(IRODSAccessLevelAdministerObject):
75+
return IRODSAccessLevelAdministerObject
76+
case string(IRODSAccessLevelCreateObject), "create":
77+
return IRODSAccessLevelCreateObject
78+
case string(IRODSAccessLevelModifyObject), "modify", "write":
79+
return IRODSAccessLevelModifyObject
80+
case string(IRODSAccessLevelDeleteObject), "delete":
81+
return IRODSAccessLevelDeleteObject
82+
case string(IRODSAccessLevelCreateToken):
83+
return IRODSAccessLevelCreateToken
84+
case string(IRODSAccessLevelDeleteToken):
85+
return IRODSAccessLevelDeleteToken
86+
case string(IRODSAccessLevelCurate):
87+
return IRODSAccessLevelCurate
88+
case string(IRODSAccessLevelOwner):
89+
return IRODSAccessLevelOwner
90+
case string(IRODSAccessLevelNull):
91+
fallthrough
92+
default:
93+
return IRODSAccessLevelNull
94+
}
95+
}
96+
1997
// ChmodString returns the string for update access control messages.
2098
func (accessType IRODSAccessLevelType) ChmodString() string {
2199
switch accessType {
22-
case IRODSAccessLevelRead:
100+
case IRODSAccessLevelReadObject:
23101
return "read"
24-
case IRODSAccessLevelWrite:
102+
case IRODSAccessLevelModifyObject:
25103
return "write"
26-
case IRODSAccessLevelNone:
27-
return "null"
28104
default:
29105
return string(accessType)
30106
}

0 commit comments

Comments
 (0)