Statistics
| Branch: | Tag: | Revision:

root / src / gr / ebs / gss / client / CredentialsDialog.java @ 6951c253

History | View | Annotate | Download (11.2 kB)

1 14ad7326 pastith
/*
2 14ad7326 pastith
 * Copyright 2008, 2009 Electronic Business Systems Ltd.
3 14ad7326 pastith
 *
4 14ad7326 pastith
 * This file is part of GSS.
5 14ad7326 pastith
 *
6 14ad7326 pastith
 * GSS is free software: you can redistribute it and/or modify
7 14ad7326 pastith
 * it under the terms of the GNU General Public License as published by
8 14ad7326 pastith
 * the Free Software Foundation, either version 3 of the License, or
9 14ad7326 pastith
 * (at your option) any later version.
10 14ad7326 pastith
 *
11 14ad7326 pastith
 * GSS is distributed in the hope that it will be useful,
12 14ad7326 pastith
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 14ad7326 pastith
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 14ad7326 pastith
 * GNU General Public License for more details.
15 14ad7326 pastith
 *
16 14ad7326 pastith
 * You should have received a copy of the GNU General Public License
17 14ad7326 pastith
 * along with GSS.  If not, see <http://www.gnu.org/licenses/>.
18 14ad7326 pastith
 */
19 14ad7326 pastith
package gr.ebs.gss.client;
20 14ad7326 pastith
21 ecd6bc24 Christos V. Stathis
import com.google.gwt.user.client.Window;
22 b4348269 Dimitris Routsis
import gr.ebs.gss.client.rest.PostCommand;
23 3ef7b691 Dimitris Routsis
import gr.ebs.gss.client.rest.RestException;
24 3ef7b691 Dimitris Routsis
25 0e49ac87 pastith
import com.google.gwt.core.client.GWT;
26 afd3a0ef Giannis Koutsoubos
import com.google.gwt.dom.client.NativeEvent;
27 afd3a0ef Giannis Koutsoubos
import com.google.gwt.event.dom.client.ClickEvent;
28 afd3a0ef Giannis Koutsoubos
import com.google.gwt.event.dom.client.ClickHandler;
29 afd3a0ef Giannis Koutsoubos
import com.google.gwt.event.dom.client.KeyCodes;
30 3ef7b691 Dimitris Routsis
import com.google.gwt.user.client.DeferredCommand;
31 afd3a0ef Giannis Koutsoubos
import com.google.gwt.user.client.Event.NativePreviewEvent;
32 afd3a0ef Giannis Koutsoubos
import com.google.gwt.user.client.ui.AbstractImagePrototype;
33 14ad7326 pastith
import com.google.gwt.user.client.ui.Button;
34 14ad7326 pastith
import com.google.gwt.user.client.ui.DialogBox;
35 14ad7326 pastith
import com.google.gwt.user.client.ui.FlexTable;
36 14ad7326 pastith
import com.google.gwt.user.client.ui.HTML;
37 14ad7326 pastith
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
38 3ef7b691 Dimitris Routsis
import com.google.gwt.user.client.ui.HorizontalPanel;
39 14ad7326 pastith
import com.google.gwt.user.client.ui.TextBox;
40 14ad7326 pastith
import com.google.gwt.user.client.ui.VerticalPanel;
41 14ad7326 pastith
42 14ad7326 pastith
43 14ad7326 pastith
/**
44 57d95ead pastith
 * A dialog box that displays the user credentials for use in other client
45 57d95ead pastith
 * applications, such as WebDAV clients.
46 14ad7326 pastith
 *
47 57d95ead pastith
 * @author kman
48 14ad7326 pastith
 */
49 14ad7326 pastith
public class CredentialsDialog extends DialogBox {
50 1e5613f5 fstamatelopoulos
51 df15a062 fstamatelopoulos
        private final String WIDTH_FIELD = "35em";
52 df15a062 fstamatelopoulos
        private final String WIDTH_TEXT = "42em";
53 df15a062 fstamatelopoulos
54 3ef7b691 Dimitris Routsis
        private TextBox passwordBox;
55 3ef7b691 Dimitris Routsis
56 3ef7b691 Dimitris Routsis
        /**
57 3ef7b691 Dimitris Routsis
         * The 'confirm reset password' dialog box.
58 3ef7b691 Dimitris Routsis
         */
59 6c73ee65 Dimitris Routsis
        private class ConfirmResetPasswordDialog extends DialogBox {
60 3ef7b691 Dimitris Routsis
61 3ef7b691 Dimitris Routsis
                /**
62 3ef7b691 Dimitris Routsis
                 * The widget's constructor.
63 3ef7b691 Dimitris Routsis
                 *
64 3ef7b691 Dimitris Routsis
                 * @param images the supplied images
65 3ef7b691 Dimitris Routsis
                 */
66 3ef7b691 Dimitris Routsis
                private ConfirmResetPasswordDialog(MessagePanel.Images images) {
67 3ef7b691 Dimitris Routsis
                        // Set the dialog's caption.
68 3ef7b691 Dimitris Routsis
                        setText("Confirmation");
69 3ef7b691 Dimitris Routsis
                        setAnimationEnabled(true);
70 3ef7b691 Dimitris Routsis
                        // Create a VerticalPanel to contain the label and the buttons.
71 3ef7b691 Dimitris Routsis
                        VerticalPanel outer = new VerticalPanel();
72 3ef7b691 Dimitris Routsis
                        HorizontalPanel buttons = new HorizontalPanel();
73 3ef7b691 Dimitris Routsis
74 3ef7b691 Dimitris Routsis
                        HTML text;
75 6e6e914e Panagiotis Astithas
                        text = new HTML("<table><tr><td>" +
76 6e6e914e Panagiotis Astithas
                                        AbstractImagePrototype.create(images.warn()).getHTML() +
77 6e6e914e Panagiotis Astithas
                                        "</td><td>" + "Are you sure you want to create a new " +
78 6e6e914e Panagiotis Astithas
                                        "WebDAV password?</td></tr></table>");
79 3ef7b691 Dimitris Routsis
                        text.setStyleName("gss-warnMessage");
80 3ef7b691 Dimitris Routsis
                        outer.add(text);
81 3ef7b691 Dimitris Routsis
82 6e6e914e Panagiotis Astithas
                        // Create the 'Yes' button, along with a listener that hides the
83 6e6e914e Panagiotis Astithas
                        // dialog when the button is clicked and resets the password.
84 afd3a0ef Giannis Koutsoubos
                        Button ok = new Button("Yes", new ClickHandler() {
85 afd3a0ef Giannis Koutsoubos
                                @Override
86 afd3a0ef Giannis Koutsoubos
                                public void onClick(ClickEvent event) {
87 3ef7b691 Dimitris Routsis
                                        resetPassword(GSS.get().getCurrentUserResource().getUri());
88 3ef7b691 Dimitris Routsis
                                        hide();
89 3ef7b691 Dimitris Routsis
                                }
90 3ef7b691 Dimitris Routsis
                        });
91 3ef7b691 Dimitris Routsis
                        buttons.add(ok);
92 3ef7b691 Dimitris Routsis
                        buttons.setCellHorizontalAlignment(ok, HasHorizontalAlignment.ALIGN_CENTER);
93 3ef7b691 Dimitris Routsis
                        // Create the 'No' button, along with a listener that hides the
94 3ef7b691 Dimitris Routsis
                        // dialog when the button is clicked.
95 afd3a0ef Giannis Koutsoubos
                        Button cancel = new Button("No", new ClickHandler() {
96 afd3a0ef Giannis Koutsoubos
                                @Override
97 afd3a0ef Giannis Koutsoubos
                                public void onClick(ClickEvent event) {
98 3ef7b691 Dimitris Routsis
                                        hide();
99 3ef7b691 Dimitris Routsis
                                }
100 3ef7b691 Dimitris Routsis
                        });
101 3ef7b691 Dimitris Routsis
                        buttons.add(cancel);
102 3ef7b691 Dimitris Routsis
                        buttons.setCellHorizontalAlignment(cancel, HasHorizontalAlignment.ALIGN_CENTER);
103 3ef7b691 Dimitris Routsis
                        buttons.setSpacing(8);
104 3ef7b691 Dimitris Routsis
                        buttons.setStyleName("gss-warnMessage");
105 3ef7b691 Dimitris Routsis
                        outer.setStyleName("gss-warnMessage");
106 3ef7b691 Dimitris Routsis
                        outer.add(buttons);
107 3ef7b691 Dimitris Routsis
                        outer.setCellHorizontalAlignment(text, HasHorizontalAlignment.ALIGN_CENTER);
108 3ef7b691 Dimitris Routsis
                        outer.setCellHorizontalAlignment(buttons, HasHorizontalAlignment.ALIGN_CENTER);
109 3ef7b691 Dimitris Routsis
                        setWidget(outer);
110 3ef7b691 Dimitris Routsis
                }
111 3ef7b691 Dimitris Routsis
112 3ef7b691 Dimitris Routsis
                @Override
113 afd3a0ef Giannis Koutsoubos
                protected void onPreviewNativeEvent(NativePreviewEvent preview) {
114 afd3a0ef Giannis Koutsoubos
                        super.onPreviewNativeEvent(preview);
115 afd3a0ef Giannis Koutsoubos
                        NativeEvent evt = preview.getNativeEvent();
116 afd3a0ef Giannis Koutsoubos
                        if (evt.getType().equals("keydown"))
117 afd3a0ef Giannis Koutsoubos
                                // Use the popup's key preview hooks to close the dialog when either
118 afd3a0ef Giannis Koutsoubos
                                // enter or escape is pressed.
119 afd3a0ef Giannis Koutsoubos
                                switch (evt.getKeyCode()) {
120 afd3a0ef Giannis Koutsoubos
                                        case KeyCodes.KEY_ENTER:
121 afd3a0ef Giannis Koutsoubos
                                        case KeyCodes.KEY_ESCAPE:
122 afd3a0ef Giannis Koutsoubos
                                                hide();
123 afd3a0ef Giannis Koutsoubos
                                                break;
124 afd3a0ef Giannis Koutsoubos
                                }
125 3ef7b691 Dimitris Routsis
                }
126 3ef7b691 Dimitris Routsis
127 3ef7b691 Dimitris Routsis
        }
128 3ef7b691 Dimitris Routsis
129 6c73ee65 Dimitris Routsis
        private class ReauthenticateDialog extends DialogBox {
130 6c73ee65 Dimitris Routsis
                /**
131 6c73ee65 Dimitris Routsis
                 * The widget constructor.
132 6c73ee65 Dimitris Routsis
                 */
133 6c73ee65 Dimitris Routsis
                public ReauthenticateDialog() {
134 6c73ee65 Dimitris Routsis
                        // Set the dialog's caption.
135 6c73ee65 Dimitris Routsis
                        setText("New Password Created");
136 6c73ee65 Dimitris Routsis
                        setAnimationEnabled(true);
137 6c73ee65 Dimitris Routsis
                        VerticalPanel outer = new VerticalPanel();
138 6c73ee65 Dimitris Routsis
139 6c73ee65 Dimitris Routsis
                        // Create the text and set a style name so we can style it with CSS.
140 6e6e914e Panagiotis Astithas
                        HTML text = new HTML("<p>A new WebDAV password has been created." +
141 6e6e914e Panagiotis Astithas
                                        "</p><p>You will now be redirected to the initial screen" +
142 6e6e914e Panagiotis Astithas
                                        " for the changes to take effect. Choose \"Show " +
143 6e6e914e Panagiotis Astithas
                                        "Credentials\" again afterwards to see the new password.</p>");
144 6c73ee65 Dimitris Routsis
                        text.setStyleName("gss-AboutText");
145 6c73ee65 Dimitris Routsis
                        outer.add(text);
146 6c73ee65 Dimitris Routsis
147 6e6e914e Panagiotis Astithas
                        // Create the 'OK' button, along with a listener that hides the
148 6e6e914e Panagiotis Astithas
                        // dialog when the button is clicked.
149 afd3a0ef Giannis Koutsoubos
                        Button confirm = new Button("Proceed", new ClickHandler() {
150 afd3a0ef Giannis Koutsoubos
                                @Override
151 afd3a0ef Giannis Koutsoubos
                                public void onClick(ClickEvent event) {
152 6c73ee65 Dimitris Routsis
                                        GSS.get().authenticateUser();
153 6c73ee65 Dimitris Routsis
                                        hide();
154 6c73ee65 Dimitris Routsis
                                }
155 6c73ee65 Dimitris Routsis
                        });
156 6c73ee65 Dimitris Routsis
                        outer.add(confirm);
157 6c73ee65 Dimitris Routsis
                        outer.setCellHorizontalAlignment(confirm, HasHorizontalAlignment.ALIGN_CENTER);
158 6c73ee65 Dimitris Routsis
                        outer.setSpacing(8);
159 6c73ee65 Dimitris Routsis
                        setWidget(outer);
160 6c73ee65 Dimitris Routsis
                }
161 6c73ee65 Dimitris Routsis
162 6c73ee65 Dimitris Routsis
                @Override
163 afd3a0ef Giannis Koutsoubos
                protected void onPreviewNativeEvent(NativePreviewEvent preview) {
164 afd3a0ef Giannis Koutsoubos
                        super.onPreviewNativeEvent(preview);
165 afd3a0ef Giannis Koutsoubos
                        NativeEvent evt = preview.getNativeEvent();
166 afd3a0ef Giannis Koutsoubos
                        if (evt.getType().equals("keydown"))
167 6e6e914e Panagiotis Astithas
                                // Use the popup's key preview hooks to close the dialog when
168 6e6e914e Panagiotis Astithas
                                // either enter or escape is pressed.
169 afd3a0ef Giannis Koutsoubos
                                switch (evt.getKeyCode()) {
170 afd3a0ef Giannis Koutsoubos
                                        case KeyCodes.KEY_ENTER:
171 afd3a0ef Giannis Koutsoubos
                                                GSS.get().authenticateUser();
172 afd3a0ef Giannis Koutsoubos
                                                hide();
173 afd3a0ef Giannis Koutsoubos
                                                break;
174 afd3a0ef Giannis Koutsoubos
                                        case KeyCodes.KEY_ESCAPE:
175 afd3a0ef Giannis Koutsoubos
                                                hide();
176 afd3a0ef Giannis Koutsoubos
                                                break;
177 afd3a0ef Giannis Koutsoubos
                                }
178 6c73ee65 Dimitris Routsis
                }
179 afd3a0ef Giannis Koutsoubos
180 6c73ee65 Dimitris Routsis
        }
181 6c73ee65 Dimitris Routsis
182 14ad7326 pastith
        /**
183 14ad7326 pastith
         * The widget constructor.
184 14ad7326 pastith
         */
185 3ef7b691 Dimitris Routsis
        public CredentialsDialog(final MessagePanel.Images images) {
186 14ad7326 pastith
                // Set the dialog's caption.
187 14ad7326 pastith
                setText("User Credentials");
188 14ad7326 pastith
                setAnimationEnabled(true);
189 6e6e914e Panagiotis Astithas
                // A VerticalPanel that contains the 'about' label and the 'OK' button.
190 14ad7326 pastith
                VerticalPanel outer = new VerticalPanel();
191 bbad17b4 pastith
                Configuration conf = (Configuration) GWT.create(Configuration.class);
192 bbad17b4 pastith
                String service = conf.serviceName();
193 ecd6bc24 Christos V. Stathis
        String path = Window.Location.getPath();
194 ecd6bc24 Christos V. Stathis
        String baseUrl = GWT.getModuleBaseURL();
195 ecd6bc24 Christos V. Stathis
        String homeUrl = baseUrl.substring(0, baseUrl.indexOf(path));
196 ecd6bc24 Christos V. Stathis
                String webdavUrl = homeUrl + conf.webdavUrl();
197 def4c064 Panagiotis Astithas
                String tokenNote = conf.tokenTTLNote();
198 14ad7326 pastith
                // Create the text and set a style name so we can style it with CSS.
199 6e6e914e Panagiotis Astithas
                HTML text = new HTML("<p>These are the user credentials that are " +
200 6e6e914e Panagiotis Astithas
                                "required for interacting with " + service + ". You can copy" +
201 6e6e914e Panagiotis Astithas
                                " and paste the username and password in the WebDAV client " +
202 6e6e914e Panagiotis Astithas
                                "in order to use " + service + " through the WebDAV " +
203 6e6e914e Panagiotis Astithas
                                "interface, at:<br/> " + webdavUrl + "<br/>" + tokenNote +
204 6e6e914e Panagiotis Astithas
                                "</p>");
205 14ad7326 pastith
                text.setStyleName("gss-AboutText");
206 df15a062 fstamatelopoulos
                text.setWidth(WIDTH_TEXT);
207 14ad7326 pastith
                outer.add(text);
208 14ad7326 pastith
                FlexTable table = new FlexTable();
209 14ad7326 pastith
                table.setText(0, 0, "Username");
210 3ef7b691 Dimitris Routsis
                table.setText(1, 0, "Password");
211 3ef7b691 Dimitris Routsis
                table.setText(2, 0, "Token");
212 14ad7326 pastith
                TextBox username = new TextBox();
213 3ef7b691 Dimitris Routsis
                final GSS app = GSS.get();
214 458a6a8e pastith
                username.setText(app.getCurrentUserResource().getUsername());
215 14ad7326 pastith
                username.setReadOnly(true);
216 df15a062 fstamatelopoulos
                username.setWidth(WIDTH_FIELD);
217 afd3a0ef Giannis Koutsoubos
                username.addClickHandler(new ClickHandler() {
218 afd3a0ef Giannis Koutsoubos
                        @Override
219 afd3a0ef Giannis Koutsoubos
                        public void onClick(ClickEvent event) {
220 18cd8128 fstamatelopoulos
                                GSS.enableIESelection();
221 afd3a0ef Giannis Koutsoubos
                                ((TextBox) event.getSource()).selectAll();
222 18cd8128 fstamatelopoulos
                                GSS.preventIESelection();
223 1e5613f5 fstamatelopoulos
                        }
224 d0dd62e3 fstamatelopoulos
225 1e5613f5 fstamatelopoulos
                });
226 14ad7326 pastith
                table.setWidget(0, 1, username);
227 3ef7b691 Dimitris Routsis
                passwordBox = new TextBox();
228 3ef7b691 Dimitris Routsis
                passwordBox.setText(app.getWebDAVPassword());
229 3ef7b691 Dimitris Routsis
                passwordBox.setReadOnly(true);
230 3ef7b691 Dimitris Routsis
                passwordBox.setWidth(WIDTH_FIELD);
231 afd3a0ef Giannis Koutsoubos
                passwordBox.addClickHandler(new  ClickHandler() {
232 afd3a0ef Giannis Koutsoubos
                        @Override
233 afd3a0ef Giannis Koutsoubos
                        public void onClick(ClickEvent event) {
234 3ef7b691 Dimitris Routsis
                                GSS.enableIESelection();
235 afd3a0ef Giannis Koutsoubos
                                ((TextBox) event.getSource()).selectAll();
236 3ef7b691 Dimitris Routsis
                                GSS.preventIESelection();
237 3ef7b691 Dimitris Routsis
                        }
238 3ef7b691 Dimitris Routsis
239 3ef7b691 Dimitris Routsis
                });
240 3ef7b691 Dimitris Routsis
                table.setWidget(1, 1, passwordBox);
241 3ef7b691 Dimitris Routsis
242 14ad7326 pastith
                TextBox tokenBox = new TextBox();
243 458a6a8e pastith
                tokenBox.setText(app.getToken());
244 57d95ead pastith
                tokenBox.setReadOnly(true);
245 df15a062 fstamatelopoulos
                tokenBox.setWidth(WIDTH_FIELD);
246 afd3a0ef Giannis Koutsoubos
                tokenBox.addClickHandler(new ClickHandler() {
247 afd3a0ef Giannis Koutsoubos
                        @Override
248 afd3a0ef Giannis Koutsoubos
                        public void onClick(ClickEvent event) {
249 18cd8128 fstamatelopoulos
                                GSS.enableIESelection();
250 afd3a0ef Giannis Koutsoubos
                                ((TextBox) event.getSource()).selectAll();
251 18cd8128 fstamatelopoulos
                                GSS.preventIESelection();
252 1e5613f5 fstamatelopoulos
                        }
253 d0dd62e3 fstamatelopoulos
254 1e5613f5 fstamatelopoulos
                });
255 3ef7b691 Dimitris Routsis
                table.setWidget(2, 1, tokenBox);
256 3ef7b691 Dimitris Routsis
257 14ad7326 pastith
                table.getFlexCellFormatter().setStyleName(0, 0, "props-labels");
258 14ad7326 pastith
                table.getFlexCellFormatter().setStyleName(0, 1, "props-values");
259 14ad7326 pastith
                table.getFlexCellFormatter().setStyleName(1, 0, "props-labels");
260 14ad7326 pastith
                table.getFlexCellFormatter().setStyleName(1, 1, "props-values");
261 3ef7b691 Dimitris Routsis
                table.getFlexCellFormatter().setStyleName(2, 0, "props-labels");
262 3ef7b691 Dimitris Routsis
                table.getFlexCellFormatter().setStyleName(2, 1, "props-values");
263 14ad7326 pastith
                outer.add(table);
264 14ad7326 pastith
265 14ad7326 pastith
                // Create the 'OK' button, along with a listener that hides the dialog
266 14ad7326 pastith
                // when the button is clicked.
267 afd3a0ef Giannis Koutsoubos
                Button confirm = new Button("Close", new ClickHandler() {
268 afd3a0ef Giannis Koutsoubos
                        @Override
269 afd3a0ef Giannis Koutsoubos
                        public void onClick(ClickEvent event) {
270 14ad7326 pastith
                                hide();
271 14ad7326 pastith
                        }
272 14ad7326 pastith
                });
273 14ad7326 pastith
                outer.add(confirm);
274 14ad7326 pastith
                outer.setCellHorizontalAlignment(confirm, HasHorizontalAlignment.ALIGN_CENTER);
275 3ef7b691 Dimitris Routsis
276 6e6e914e Panagiotis Astithas
                // Create the 'Reset password' button, along with a listener that hides
277 6e6e914e Panagiotis Astithas
                // the dialog when the button is clicked.
278 afd3a0ef Giannis Koutsoubos
                Button resetPassword = new Button("Reset Password", new ClickHandler() {
279 afd3a0ef Giannis Koutsoubos
                        @Override
280 afd3a0ef Giannis Koutsoubos
                        public void onClick(ClickEvent event) {
281 3ef7b691 Dimitris Routsis
                                ConfirmResetPasswordDialog dlg = new ConfirmResetPasswordDialog(images);
282 3ef7b691 Dimitris Routsis
                                dlg.center();
283 3ef7b691 Dimitris Routsis
                        }
284 3ef7b691 Dimitris Routsis
                });
285 3ef7b691 Dimitris Routsis
                outer.add(resetPassword);
286 3ef7b691 Dimitris Routsis
                outer.setCellHorizontalAlignment(resetPassword, HasHorizontalAlignment.ALIGN_CENTER);
287 3ef7b691 Dimitris Routsis
288 14ad7326 pastith
                outer.setSpacing(8);
289 14ad7326 pastith
                setWidget(outer);
290 14ad7326 pastith
        }
291 14ad7326 pastith
292 57d95ead pastith
        @Override
293 afd3a0ef Giannis Koutsoubos
        protected void onPreviewNativeEvent(NativePreviewEvent preview) {
294 afd3a0ef Giannis Koutsoubos
                super.onPreviewNativeEvent(preview);
295 afd3a0ef Giannis Koutsoubos
                NativeEvent evt = preview.getNativeEvent();
296 afd3a0ef Giannis Koutsoubos
                if (evt.getType().equals("keydown"))
297 6e6e914e Panagiotis Astithas
                        // Use the popup's key preview hooks to close the dialog when
298 6e6e914e Panagiotis Astithas
                        // either enter or escape is pressed.
299 afd3a0ef Giannis Koutsoubos
                        switch (evt.getKeyCode()) {
300 afd3a0ef Giannis Koutsoubos
                                case KeyCodes.KEY_ENTER:
301 afd3a0ef Giannis Koutsoubos
                                case KeyCodes.KEY_ESCAPE:
302 afd3a0ef Giannis Koutsoubos
                                        hide();
303 afd3a0ef Giannis Koutsoubos
                                        break;
304 afd3a0ef Giannis Koutsoubos
                        }
305 14ad7326 pastith
        }
306 14ad7326 pastith
307 3ef7b691 Dimitris Routsis
308 3ef7b691 Dimitris Routsis
        /**
309 3ef7b691 Dimitris Routsis
         * Generate an RPC request to reset WebDAV password.
310 3ef7b691 Dimitris Routsis
         *
311 3ef7b691 Dimitris Routsis
         * @param userId the Uri of the user whose password will be reset
312 3ef7b691 Dimitris Routsis
         */
313 3ef7b691 Dimitris Routsis
        private void resetPassword(String userUri) {
314 3ef7b691 Dimitris Routsis
315 3ef7b691 Dimitris Routsis
                if (userUri == null || userUri.length() == 0) {
316 3ef7b691 Dimitris Routsis
                        GSS.get().displayError("Empty user Uri!");
317 3ef7b691 Dimitris Routsis
                        return;
318 3ef7b691 Dimitris Routsis
                }
319 3ef7b691 Dimitris Routsis
                GWT.log("resetPassword(" + userUri + ")", null);
320 78137d35 Dimitris Routsis
                PostCommand cg = new PostCommand(userUri + "?resetWebDAV", "", 200) {
321 3ef7b691 Dimitris Routsis
322 3ef7b691 Dimitris Routsis
                        @Override
323 3ef7b691 Dimitris Routsis
                        public void onComplete() {
324 6c73ee65 Dimitris Routsis
                                ReauthenticateDialog dlg = new ReauthenticateDialog();
325 6c73ee65 Dimitris Routsis
                                dlg.center();
326 3ef7b691 Dimitris Routsis
                        }
327 3ef7b691 Dimitris Routsis
328 3ef7b691 Dimitris Routsis
                        @Override
329 3ef7b691 Dimitris Routsis
                        public void onError(Throwable t) {
330 3ef7b691 Dimitris Routsis
                                GWT.log("", t);
331 3ef7b691 Dimitris Routsis
                                if(t instanceof RestException){
332 3ef7b691 Dimitris Routsis
                                        int statusCode = ((RestException)t).getHttpStatusCode();
333 3ef7b691 Dimitris Routsis
                                        if(statusCode == 405)
334 6e6e914e Panagiotis Astithas
                                                GSS.get().displayError("You don't have the necessary" +
335 6e6e914e Panagiotis Astithas
                                                                " permissions");
336 3ef7b691 Dimitris Routsis
                                        else if(statusCode == 404)
337 3ef7b691 Dimitris Routsis
                                                GSS.get().displayError("Resource does not exist");
338 3ef7b691 Dimitris Routsis
                                        else
339 6e6e914e Panagiotis Astithas
                                                GSS.get().displayError("Unable to reset password:" +
340 6e6e914e Panagiotis Astithas
                                                                        ((RestException)t).getHttpStatusText());
341 3ef7b691 Dimitris Routsis
                                }
342 3ef7b691 Dimitris Routsis
                                else
343 6e6e914e Panagiotis Astithas
                                        GSS.get().displayError("System error resetting password:" +
344 6e6e914e Panagiotis Astithas
                                                                t.getMessage());
345 3ef7b691 Dimitris Routsis
                        }
346 3ef7b691 Dimitris Routsis
                };
347 3ef7b691 Dimitris Routsis
                DeferredCommand.addCommand(cg);
348 3ef7b691 Dimitris Routsis
        }
349 3ef7b691 Dimitris Routsis
350 14ad7326 pastith
}