misc
[aramzamzam-commons.git] / tapestry-quickstart / src / main / java / ru / rentdom / pages / Recover.java
blob93d04c0c2d57f131243d9b7a6b6349d6fcb23b32
1 package ru.rentdom.pages;
3 import java.net.URI;
4 import java.net.URISyntaxException;
5 import java.util.Calendar;
7 import net.aramzamzam.commons.tokens.services.TokenManager;
9 import org.apache.tapestry5.Block;
10 import org.apache.tapestry5.ComponentResources;
11 import org.apache.tapestry5.Link;
12 import org.apache.tapestry5.PersistenceConstants;
13 import org.apache.tapestry5.ValidationException;
14 import org.apache.tapestry5.annotations.Persist;
15 import org.apache.tapestry5.annotations.Property;
16 import org.apache.tapestry5.hibernate.annotations.CommitAfter;
17 import org.apache.tapestry5.ioc.Messages;
18 import org.apache.tapestry5.ioc.annotations.Inject;
20 import ru.rentdom.entities.User;
21 import ru.rentdom.services.user.UserService;
23 public class Recover {
25 @SuppressWarnings("unused")
26 @Property
27 private String username;
29 @Property
30 private String password;
32 @SuppressWarnings("unused")
33 @Property
34 @Persist(PersistenceConstants.FLASH)
35 private URI recoverUrl;
37 @Property(write=false)
38 @Persist(PersistenceConstants.FLASH)
39 private Block activeBlock;
41 @Persist(PersistenceConstants.FLASH)
42 private User user;
44 @Inject
45 private UserService userService;
47 @Inject
48 private TokenManager tokenManager;
50 @Inject
51 private Messages messages;
53 @Inject
54 private ComponentResources resources;
56 @Inject
57 private Block step1;
59 @Inject
60 private Block step2;
62 @Inject
63 private Block step3;
65 @Inject
66 private Block invalidToken;
68 @Inject
69 private Block success;
71 void onActivate(User user)
73 activeBlock=tokenManager.isValid()?step3:invalidToken;
74 this.user=user;
78 void onActivate()
80 if (activeBlock==null)
81 activeBlock=step1;
84 void onValidateFromUsername(String username) throws ValidationException
86 user = userService.findByUserName(username);
87 if (user==null)
88 throw new ValidationException(messages.get("not_found"));
91 void onSuccessFromRequestFrom() throws URISyntaxException
93 Link link = resources.createPageLink(Recover.class, true, user);
94 Calendar expiried=Calendar.getInstance();
95 expiried.add(Calendar.HOUR, 48);
96 recoverUrl=tokenManager.grant(link, expiried.getTime());
97 activeBlock=step2;
100 @CommitAfter
101 void onSuccessFromChangePasswordForm() throws URISyntaxException
103 user.setPassword(password);
104 userService.changeUserPassword(user);
105 activeBlock=success;