1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.cms.security;
35
36 import info.magnolia.cms.util.UrlPattern;
37
38 import java.io.Serializable;
39 import java.util.Hashtable;
40 import java.util.Map;
41
42
43
44
45
46 public class PermissionImpl implements Permission, Serializable {
47
48 private static Map<Long, String> nameStrings = new Hashtable<>();
49
50 static {
51 nameStrings.put(0L, "none");
52 nameStrings.put(Permission.ADD, Permission.PERMISSION_NAME_ADD);
53 nameStrings.put(Permission.SET, Permission.PERMISSION_NAME_SET);
54 nameStrings.put(Permission.REMOVE, Permission.PERMISSION_NAME_REMOVE);
55 nameStrings.put(Permission.READ, Permission.PERMISSION_NAME_READ);
56 nameStrings.put(Permission.EXECUTE, Permission.PERMISSION_NAME_EXECUTE);
57 nameStrings.put(Permission.SYNDICATE, Permission.PERMISSION_NAME_SYNDICATE);
58 nameStrings.put(Permission.ALL, Permission.PERMISSION_NAME_ALL);
59 nameStrings.put(Permission.WRITE, Permission.PERMISSION_NAME_WRITE);
60 }
61
62 private UrlPattern pattern;
63
64 private long permissions;
65
66 @Override
67 public void setPattern(UrlPattern value) {
68 this.pattern = value;
69 }
70
71 @Override
72 public UrlPattern getPattern() {
73 return this.pattern;
74 }
75
76 @Override
77 public void setPermissions(long value) {
78 this.permissions = value;
79 }
80
81 @Override
82 public long getPermissions() {
83 return this.permissions;
84 }
85
86 @Override
87 public boolean match(String path) {
88 return this.pattern.match(path);
89 }
90
91 @Override
92 public String toString() {
93 return getPermissionAsName(permissions) + " " + pattern;
94 }
95
96 public static String getPermissionAsName(long permission) {
97 final String name = nameStrings.get(permission);
98 if (name == null) {
99 return "[unknown permission]";
100 }
101 return name;
102 }
103 }