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.module.exchangesimple.pages;
35
36 import info.magnolia.cms.i18n.Messages;
37 import info.magnolia.cms.i18n.MessagesManager;
38 import info.magnolia.cms.security.AccessDeniedException;
39 import info.magnolia.cms.security.AccessManager;
40 import info.magnolia.cms.security.MgnlKeyPair;
41 import info.magnolia.cms.security.Permission;
42 import info.magnolia.cms.security.SecurityUtil;
43 import info.magnolia.context.MgnlContext;
44 import info.magnolia.module.ModuleRegistry;
45 import info.magnolia.module.admininterface.TemplatedMVCHandler;
46 import info.magnolia.module.exchangesimple.ExchangeSimpleModule;
47
48 import javax.servlet.ServletException;
49 import javax.servlet.http.HttpServletRequest;
50 import javax.servlet.http.HttpServletResponse;
51
52
53
54
55
56
57 public class ActivationPage extends TemplatedMVCHandler {
58
59 private int keyLength;
60
61 private boolean generateKeys;
62
63 private boolean success;
64
65
66
67
68
69
70 public ActivationPage(String name, HttpServletRequest request, HttpServletResponse response) {
71 super(name, request, response);
72 keyLength = ModuleRegistry.Factory.getInstance().getModuleInstance(ExchangeSimpleModule.class).getActivationKeyLength();
73 }
74
75
76
77
78 @Override
79 public String getCommand() {
80 if (this.generateKeys) {
81 return "generateKeys";
82 }
83 return super.getCommand();
84 }
85
86
87
88
89 public String generateKeys() throws Exception {
90 if (!checkPermissions(request, "config", "/", Permission.WRITE)) {
91 throw new ServletException(new AccessDeniedException(
92 "Write permission needed to generate new key. Please try again after logging in with appropriate permissions."));
93 }
94
95 MgnlKeyPair keyPair = SecurityUtil.generateKeyPair(keyLength);
96 SecurityUtil.updateKeys(keyPair);
97 this.success = true;
98
99
100
101 return this.show();
102 }
103
104 public String getCurrentPublicKey() {
105 return SecurityUtil.getPublicKey();
106 }
107
108
109
110
111
112
113
114
115 protected boolean checkPermissions(HttpServletRequest request, String repository, String basePath,
116 long permissionType) {
117
118 AccessManager accessManager = MgnlContext.getAccessManager(repository);
119 if (accessManager != null) {
120 if (!accessManager.isGranted(basePath, permissionType)) {
121 return false;
122 }
123 }
124 return true;
125 }
126
127 public Messages getMessages() {
128 return MessagesManager.getMessages("info.magnolia.module.exchangesimple.messages");
129 }
130
131 public int getKeyLength() {
132 return keyLength;
133 }
134
135 public void setKeyLength(int keyLength) {
136 this.keyLength = keyLength;
137 }
138
139 public boolean isGenerateKeys() {
140 return generateKeys;
141 }
142
143 public void setGenerateKeys(boolean generateKeys) {
144 this.generateKeys = generateKeys;
145 }
146
147 public boolean isSuccess() {
148 return success;
149 }
150
151 public void setSuccess(boolean success) {
152 this.success = success;
153 }
154
155 }