Subversion Repositories bacoAlunos

Rev

Rev 1585 | Rev 1704 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 fvelez 1
package pt.estgp.estgweb.web.controllers.authenticate;
2
 
1585 jmachado 3
import org.apache.log4j.Logger;
1 fvelez 4
import org.apache.struts.action.*;
1585 jmachado 5
import pt.estgp.estgweb.Globals;
6
import pt.estgp.estgweb.domain.User;
7
import pt.estgp.estgweb.domain.UserImpl;
8
import pt.estgp.estgweb.domain.UserSession;
9
import pt.estgp.estgweb.domain.views.UserView;
10
import pt.estgp.estgweb.services.authenticate.AuthenticateException;
11
import pt.estgp.estgweb.web.UserSessionProxy;
1686 jmachado 12
import pt.estgp.estgweb.web.controllers.utils.AbstractWidgetAjaxController;
1 fvelez 13
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
109 fvelez 14
import pt.estgp.estgweb.web.form.profile.ProfileForm;
1585 jmachado 15
import pt.estgp.estgweb.web.utils.RequestUtils;
1 fvelez 16
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
17
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
18
 
1585 jmachado 19
import javax.servlet.ServletException;
1 fvelez 20
import javax.servlet.http.HttpServletRequest;
21
import javax.servlet.http.HttpServletResponse;
22
import java.io.IOException;
23
 
24
/**
25
 * @author Jorge Machado
26
 * @date 26/Fev/2008
27
 * @time 18:01:54
28
 * @see pt.estgp.estgweb.web
29
 */
1686 jmachado 30
public class AuthenticateController extends AbstractWidgetAjaxController
1 fvelez 31
{
32
 
33
    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(AuthenticateController.class);
34
 
1686 jmachado 35
    public boolean loginWidget(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
36
    {
37
        try
38
        {
39
            1.5.0/docs/api/java/lang/String.html">String username = request.getParameter("username");
40
            1.5.0/docs/api/java/lang/String.html">String password = request.getParameter("password");
41
            IServiceManager sm = ServiceManager.getInstance();
42
            5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{username,password};
43
            UserSession userSession = (UserSession) sm.execute(RequestUtils.getRequester(request, response),Globals.AUTHENTICATE_SERVICE,args);
44
            request.setAttribute(Globals.USER_SESSION_KEY,userSession);
45
            return true;
46
        }
47
        catch (AuthenticateException e)
48
        {
49
            ActionMessages actionMessages = new ActionMessages();
50
            actionMessages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage(e.getMessage()));
51
            saveErrors(request, actionMessages);
52
            return false;
53
        }
54
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
55
        {
56
            return false;
57
        }
58
    }
59
 
1 fvelez 60
    public ActionForward login(ActionMapping mapping,
61 fvelez 61
                               ActionForm form ,
62
                               HttpServletRequest request,
63
                               HttpServletResponse response)
62 fvelez 64
            throws 1.5.0/docs/api/java/io/IOException.html">IOException,ServletException
1 fvelez 65
    {
61 fvelez 66
 
1 fvelez 67
        1.5.0/docs/api/java/lang/String.html">String username = request.getParameter("username");
68
        1.5.0/docs/api/java/lang/String.html">String password = request.getParameter("password");
69
 
70
        try
71
        {
72
            IServiceManager sm = ServiceManager.getInstance();
73
            5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{username,password};
1312 jmachado 74
            UserSession userSession = (UserSession) sm.execute(RequestUtils.getRequester(request, response),Globals.AUTHENTICATE_SERVICE,args);
61 fvelez 75
            request.setAttribute(Globals.USER_SESSION_KEY,userSession);
76
            if(!((UserImpl)userSession.getUser()).isNewUser())
77
                return mapping.findForward("success");
78
            else
109 fvelez 79
            {
80
                ProfileForm profileForm = new ProfileForm();
113 fvelez 81
                IServiceManager sm2 = ServiceManager.getInstance();
82
                1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"};
83
                5+0%2Fdocs%2Fapi+Object">Object[] args2 = new 5+0%2Fdocs%2Fapi+Object">Object[]{userSession.getUser().getId()};
142 jmachado 84
                UserView uV = (UserView) sm2.execute(RequestUtils.getRequester(request, response),"LoadUserById",args2,names);
113 fvelez 85
                profileForm.setUserView(uV);
109 fvelez 86
                request.setAttribute("ProfileForm",profileForm);
113 fvelez 87
                addMessage(request,"profile.enter.first.time",uV.getName());
61 fvelez 88
                return mapping.findForward("firstTimeAuthenticate");
109 fvelez 89
            }
61 fvelez 90
 
1 fvelez 91
        }
92
        catch (AuthenticateException e)
93
        {
94
            ActionMessages actionMessages = new ActionMessages();
95
            actionMessages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage(e.getMessage()));
96
            saveErrors(request, actionMessages);
97
            return mapping.getInputForward();
98
        }
99
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
100
        {
101
            if(e instanceof NoCookiesException)
102
                return mapping.findForward("errorNoCookies");
103
            logger.fatal(e,e);
104
        }
105
        return mapping.findForward("error500");
106
    }
107
 
1585 jmachado 108
 
1317 jmachado 109
    public ActionForward checkin(ActionMapping mapping,
110
                               ActionForm form ,
111
                               HttpServletRequest request,
112
                               HttpServletResponse response)
113
            throws 1.5.0/docs/api/java/io/IOException.html">IOException,ServletException
114
    {
115
 
116
        1.5.0/docs/api/java/lang/String.html">String certificate = request.getParameter("certificate");
117
 
118
 
119
        try
120
        {
121
            IServiceManager sm = ServiceManager.getInstance();
122
            5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{certificate};
123
            UserSession userSession = (UserSession) sm.execute(RequestUtils.getRequester(request, response),"AuthenticateCertificate",args);
124
            request.setAttribute(Globals.USER_SESSION_KEY,userSession);
125
            if(!((UserImpl)userSession.getUser()).isNewUser())
126
                return mapping.findForward("success");
127
            else
128
            {
129
                ProfileForm profileForm = new ProfileForm();
130
                IServiceManager sm2 = ServiceManager.getInstance();
131
                1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"};
132
                5+0%2Fdocs%2Fapi+Object">Object[] args2 = new 5+0%2Fdocs%2Fapi+Object">Object[]{userSession.getUser().getId()};
133
                UserView uV = (UserView) sm2.execute(RequestUtils.getRequester(request, response),"LoadUserById",args2,names);
134
                profileForm.setUserView(uV);
135
                request.setAttribute("ProfileForm",profileForm);
136
                addMessage(request,"profile.enter.first.time",uV.getName());
137
                return mapping.findForward("firstTimeAuthenticate");
138
            }
139
 
140
        }
141
        catch (AuthenticateException e)
142
        {
143
            ActionMessages actionMessages = new ActionMessages();
144
            actionMessages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage(e.getMessage()));
145
            saveErrors(request, actionMessages);
146
            return mapping.getInputForward();
147
        }
148
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
149
        {
150
            if(e instanceof NoCookiesException)
151
                return mapping.findForward("errorNoCookies");
152
            logger.fatal(e,e);
153
        }
154
        return mapping.findForward("error500");
155
    }
156
 
1 fvelez 157
    public ActionForward logout(ActionMapping mapping,
61 fvelez 158
                                ActionForm form ,
159
                                HttpServletRequest request,
160
                                HttpServletResponse response)
1 fvelez 161
            throws 1.5.0/docs/api/java/io/IOException.html">IOException, ServletException
162
    {
163
 
164
        try
165
        {
166
 
167
            UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request);
168
            if(userSession.getUser() == null)
1408 jmachado 169
                return mapping.findForward(Globals.SYSTEM_REDIRECTIONS_POLICY_INDEX_WELCOME);
1 fvelez 170
            IServiceManager sm = ServiceManager.getInstance();
171
            5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{};
172
            //to send good by message
173
            request.setAttribute("username",userSession.getUser().getUsername());
31 jmachado 174
            if(userSession.getUser().getName()!=null)
175
                request.setAttribute("name",userSession.getUser().getName());
176
            else
177
                request.setAttribute("name",userSession.getUser().getUsername());
178
 
142 jmachado 179
            userSession = (UserSession) sm.execute(RequestUtils.getRequester(request, response),"Logout",args);
1 fvelez 180
            request.setAttribute(Globals.USER_SESSION_KEY,userSession);
181
            return mapping.findForward("logout");
182
        }
183
        catch (AuthenticateException e)
184
        {
185
            ActionMessages actionMessages = new ActionMessages();
186
            actionMessages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage(e.getMessage()));
187
            saveErrors(request, actionMessages);
188
            return mapping.getInputForward();
189
        }
190
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
191
        {
192
            if(e instanceof NoCookiesException)
193
                return mapping.findForward("errorNoCookies");
194
            logger.fatal(e,e);
195
        }
196
        return mapping.findForward("error500");
197
    }
1585 jmachado 198
 
199
 
200
    public ActionForward changePassword(ActionMapping mapping,
201
                               ActionForm form ,
202
                               HttpServletRequest request,
203
                               HttpServletResponse response)
204
            throws 1.5.0/docs/api/java/io/IOException.html">IOException,ServletException
205
    {
206
 
207
        1.5.0/docs/api/java/lang/String.html">String password = request.getParameter("password");
208
        1.5.0/docs/api/java/lang/String.html">String password2 = request.getParameter("password2");
209
 
210
        if(password == null || password2 == null || password.trim().length() < 5 || !password.equals(password2))
211
        {
212
            addError(request, "fail.change.pass");
213
            return mapping.findForward("fail.change.pass");
214
        }
215
        else{
216
            boolean okBig = false;
217
            boolean okSmall = false;
218
            for(char c: password.toCharArray())
219
            {
220
                if(c >= 'A' && c <='Z')
221
                {
222
                    okBig = true;
223
 
224
                }
225
                if(c >= 'a' && c <='z')
226
                {
227
                    okSmall = true;
228
                }
229
            }
230
            if(!okBig || !okSmall)
231
            {
232
                addError(request, "fail.change.pass");
233
                return mapping.findForward("fail.change.pass");
234
            }
235
            else
236
            {
237
                try
238
                {
239
                    IServiceManager sm = ServiceManager.getInstance();
240
                    5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{password};
241
                    sm.execute(RequestUtils.getRequester(request, response),"ChangePassword",args);
242
                    addError(request, "success.change.pass");
243
                    return mapping.findForward("success");
244
                }
245
                catch (AuthenticateException e)
246
                {
247
                    ActionMessages actionMessages = new ActionMessages();
248
                    actionMessages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage(e.getMessage()));
249
                    saveErrors(request, actionMessages);
250
                    return mapping.getInputForward();
251
                }
252
                catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
253
                {
254
                    if(e instanceof NoCookiesException)
255
                        return mapping.findForward("errorNoCookies");
256
                    logger.fatal(e,e);
257
                }
258
            }
259
 
260
        }
261
 
262
        return mapping.findForward("error500");
263
    }
264
 
265
    public ActionForward requestChangePassword(ActionMapping mapping,
266
                                        ActionForm form ,
267
                                        HttpServletRequest request,
268
                                        HttpServletResponse response)
269
            throws 1.5.0/docs/api/java/io/IOException.html">IOException,ServletException
270
    {
271
 
272
        1.5.0/docs/api/java/lang/String.html">String identifier = request.getParameter("identifier");
273
 
274
        try
275
        {
276
            IServiceManager sm = ServiceManager.getInstance();
277
            5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{identifier};
278
            User u = (User) sm.execute(RequestUtils.getRequester(request, response),"RequestChangePassword",args);
279
            if(u == null)
280
            {
281
                addError(request,"fail.request.change.pass");
282
            }
283
            request.setAttribute("UserRequesterPasswordChange",u);
284
            return mapping.findForward("success");
285
        }
286
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
287
        {
288
            if(e instanceof NoCookiesException)
289
                return mapping.findForward("errorNoCookies");
290
            logger.fatal(e,e);
291
        }
292
 
293
 
294
        return mapping.findForward("error500");
295
    }
296
 
297
 
1686 jmachado 298
 
299
 
1 fvelez 300
}