r182 - in trunk/src/main: java/org/chorem/bow/action java/org/chorem/bow/interceptor resources resources/i18n
Author: vbriand Date: 2011-02-03 17:09:14 +0100 (Thu, 03 Feb 2011) New Revision: 182 Url: http://chorem.org/repositories/revision/bow/182 Log: The user is now redirected to the login page if he tries to access a page where login is mandatory, and to the home page if he is already logged in and tries to access the login / register pages. Added: trunk/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java Modified: trunk/src/main/java/org/chorem/bow/action/GenerateTokenAction.java trunk/src/main/java/org/chorem/bow/action/HomeAction.java trunk/src/main/java/org/chorem/bow/action/ImportBookmarksAction.java trunk/src/main/java/org/chorem/bow/action/LoginAction.java trunk/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java trunk/src/main/java/org/chorem/bow/action/OpenSearchSuggestionAction.java trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java trunk/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java trunk/src/main/resources/i18n/bow_fr_FR.properties trunk/src/main/resources/struts.xml Modified: trunk/src/main/java/org/chorem/bow/action/GenerateTokenAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/GenerateTokenAction.java 2011-02-03 14:26:21 UTC (rev 181) +++ trunk/src/main/java/org/chorem/bow/action/GenerateTokenAction.java 2011-02-03 16:09:14 UTC (rev 182) @@ -23,41 +23,39 @@ } public String execute() { - User user = (User)session.get("user"); - - if (user != null) { - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = Search.query().eq(Token.FQ_FIELD_EMAIL, user.getEmail()).criteria(); - Token currentToken = proxy.findByCriteria(Token.class, criteria); - if (currentToken != null) { - String id = currentToken.getWikittyId(); - proxy.delete(id); - } - TokenActions tokenActions = (TokenActions)session.get("tokenActions"); - - if (tokenActions != null) { - String token; - try { - token = tokenActions.generateToken(); //Generates an encoding MD5 token - criteria = Search.query().eq(Token.FQ_FIELD_TOKEN, token).criteria(); - Token oldToken = proxy.findByCriteria(Token.class, criteria); - - if (oldToken == null) { //Checks if the token already exists - TokenImpl newToken = new TokenImpl(); - newToken.setToken(token); - newToken.setEmail(user.getEmail()); - proxy.store((Token) newToken); //If the token doesn't exist, it is stored - tokenActions.setPermanentToken(token); - } else { - tokenActions.setPermanentToken(""); - } - } catch (NoSuchAlgorithmException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + User user = (User)session.get("user"); + WikittyProxy proxy = BowProxy.getInstance(); + Criteria criteria = Search.query().eq(Token.FQ_FIELD_EMAIL, user.getEmail()).criteria(); + Token currentToken = proxy.findByCriteria(Token.class, criteria); + + if (currentToken != null) { + String id = currentToken.getWikittyId(); + proxy.delete(id); + } + TokenActions tokenActions = (TokenActions)session.get("tokenActions"); + + if (tokenActions != null) { + String token; + + try { + token = tokenActions.generateToken(); //Generates an encoding MD5 token + criteria = Search.query().eq(Token.FQ_FIELD_TOKEN, token).criteria(); + Token oldToken = proxy.findByCriteria(Token.class, criteria); + + if (oldToken == null) { //Checks if the token already exists + TokenImpl newToken = new TokenImpl(); + newToken.setToken(token); + newToken.setEmail(user.getEmail()); + proxy.store((Token) newToken); //If the token doesn't exist, it is stored + tokenActions.setPermanentToken(token); + } else { + tokenActions.setPermanentToken(""); } + } catch (NoSuchAlgorithmException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } - return SUCCESS; } - return LOGIN; + return SUCCESS; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/HomeAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/HomeAction.java 2011-02-03 14:26:21 UTC (rev 181) +++ trunk/src/main/java/org/chorem/bow/action/HomeAction.java 2011-02-03 16:09:14 UTC (rev 182) @@ -1,6 +1,5 @@ package org.chorem.bow.action; -import java.security.NoSuchAlgorithmException; import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -8,12 +7,7 @@ import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.SessionAware; import org.chorem.bow.BowInit; -import org.chorem.bow.BowProxy; -import org.chorem.bow.Token; import org.chorem.bow.User; -import org.nuiton.wikitty.Criteria; -import org.nuiton.wikitty.WikittyProxy; -import org.nuiton.wikitty.search.Search; public class HomeAction extends BowBaseAction implements SessionAware, ServletRequestAware { private static final long serialVersionUID = -3735250067223062719L; @@ -43,39 +37,11 @@ public void setServletRequest(HttpServletRequest request) { this.request = request; } - - protected User checkPermanentToken(String token) { - if (token != null) { - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = Search.query().eq(Token.FQ_FIELD_TOKEN, token).criteria(); - Token DbToken = proxy.findByCriteria(Token.class, criteria); - if (DbToken != null) { //Check if the token exists - criteria = Search.query().eq(User.FQ_FIELD_EMAIL, DbToken.getEmail()).criteria(); //Retrieves user by token - return proxy.findByCriteria(User.class, criteria); - } - } - return null; - } - public String execute() { User user = (User)session.get("user"); - if (user == null) { - user = checkPermanentToken(token); - if (user != null) { - try { - BowInit.initSession(session, user); - } catch (NoSuchAlgorithmException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - if (user != null) { - BowInit.initHomePage(request, user); - return SUCCESS; - } - return LOGIN; + BowInit.initHomePage(request, user); + return SUCCESS; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/ImportBookmarksAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/ImportBookmarksAction.java 2011-02-03 14:26:21 UTC (rev 181) +++ trunk/src/main/java/org/chorem/bow/action/ImportBookmarksAction.java 2011-02-03 16:09:14 UTC (rev 182) @@ -190,71 +190,68 @@ public String execute() { User user = (User)session.get("user"); - if (user != null) { - if (upfile != null) { - try { - List<?> lines; + if (upfile != null) { + try { + List<?> lines; - lines = FileUtils.readLines(upfile); - String content = ""; + lines = FileUtils.readLines(upfile); + String content = ""; - for (Object line : lines) { - content += (String)line; - } - WikittyProxy proxy = BowProxy.getInstance(); + for (Object line : lines) { + content += (String)line; + } + WikittyProxy proxy = BowProxy.getInstance(); - try { - Parser parser = new Parser(content); - NodeList list = parser.parse(null); - List<Bookmark> bookmarks = new ArrayList<Bookmark>(); - parseHtmlToBookmarks(list, user, bookmarks, new ArrayList<String>()); - bookmarks = proxy.store(bookmarks); - createImportExtension(bookmarks); - redirectTo = BowUtils.redirectTo(searchLine, fullTextLine); - if (searchLine == null || searchLine.isEmpty()) { - BowInit.initHomePage(request, user); - return SUCCESS; - } else { - try { - BowSearch.search(request, user); - } catch (IOException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (ServletException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - return SUCCESS; + try { + Parser parser = new Parser(content); + NodeList list = parser.parse(null); + List<Bookmark> bookmarks = new ArrayList<Bookmark>(); + parseHtmlToBookmarks(list, user, bookmarks, new ArrayList<String>()); + bookmarks = proxy.store(bookmarks); + createImportExtension(bookmarks); + redirectTo = BowUtils.redirectTo(searchLine, fullTextLine); + if (searchLine == null || searchLine.isEmpty()) { + BowInit.initHomePage(request, user); + return SUCCESS; + } else { + try { + BowSearch.search(request, user); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } catch (ServletException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); } - } catch (ParserException e) { - request.setAttribute("errorMsgUser", getText(n_("bow.bookmark.badFileFormat"))); - request.setAttribute("errorMsgTech", e.getMessage()); - redirectTo = BowUtils.redirectTo(searchLine, fullTextLine); - - if (searchLine == null || searchLine.isEmpty()) { - BowInit.initHomePage(request, user); - return SUCCESS; - } else { - try { - BowSearch.search(request, user); - } catch (IOException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (ServletException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - return SUCCESS; - } + return SUCCESS; } - } catch (IOException e2) { - // TODO Auto-generated catch block - e2.printStackTrace(); + } catch (ParserException e) { + request.setAttribute("errorMsgUser", getText(n_("bow.bookmark.badFileFormat"))); + request.setAttribute("errorMsgTech", e.getMessage()); + redirectTo = BowUtils.redirectTo(searchLine, fullTextLine); + + if (searchLine == null || searchLine.isEmpty()) { + BowInit.initHomePage(request, user); + return SUCCESS; + } else { + try { + BowSearch.search(request, user); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } catch (ServletException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + return SUCCESS; + } } - return ERROR; + } catch (IOException e2) { + // TODO Auto-generated catch block + e2.printStackTrace(); } - return SUCCESS; + return ERROR; } - return LOGIN; + return SUCCESS; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/LoginAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/LoginAction.java 2011-02-03 14:26:21 UTC (rev 181) +++ trunk/src/main/java/org/chorem/bow/action/LoginAction.java 2011-02-03 16:09:14 UTC (rev 182) @@ -90,7 +90,7 @@ } return null; } - + public String execute() { if (email != null) { email = email.trim(); Modified: trunk/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java 2011-02-03 14:26:21 UTC (rev 181) +++ trunk/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java 2011-02-03 16:09:14 UTC (rev 182) @@ -85,74 +85,72 @@ public String execute() { User user = (User)session.get("user"); - if (user != null) { - if (searchLine != null && searchLine.matches("^http://[^ ]*")) { - redirectTo = BowUtils.redirectTo(searchLine, null); - } else if (searchLine != null - && (searchLine.startsWith(":") || searchLine.startsWith("t:")) ) { - //On fait une recherche sur les tags - - int index = searchLine.indexOf(":"); - searchLine = searchLine.substring(index+1); //Suppresses first ":" - - session.put("user", user); - try { - BowInit.initializeToken(session, user); - } catch (NoSuchAlgorithmException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = BowBookmark.getBookmarkListCriteriaByUser(user, searchLine); - criteria = criteria.addSortDescending(Bookmark.FQ_FIELD_CLICK); - PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); //Retrieves bookmarks by search - BookmarkActions bookmarkActions = BowBookmark.createBookmarkActions(request, result, searchLine); - request.setAttribute("bookmarkActions", bookmarkActions); - request.setAttribute("token", token); - redirectTo = BowUtils.redirectTo(searchLine, null); - } else if (searchLine != null && searchLine.startsWith("f:")) { - // recherche fulltext dans bow - String fullText = searchLine.substring(2); - - session.put("user", user); - try { - BowInit.initializeToken(session, user); - } catch (NoSuchAlgorithmException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria; - if (!fullText.isEmpty()) { - criteria = Search.query().keyword(fullText). - eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()).criteria(). - addFacetField(Bookmark.FQ_FIELD_TAGS); - } else { - criteria = BowBookmark.getBookmarkListCriteriaByUser(user, null); - } - PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); - BookmarkActions bookmarkActions = BowBookmark.createBookmarkActions(request, result, null); - request.setAttribute("bookmarkActions", bookmarkActions); - request.setAttribute("token", token); - redirectTo = BowUtils.redirectTo(searchLine, null); - } else if (searchLine != null && searchLine.startsWith("a:")) { - // on redirige vers l'alias demande - searchLine = searchLine.substring(2); - redirectTo = BowConfig.getInstance().getAliasUrl() + searchLine; + if (searchLine != null && searchLine.matches("^http://[^ ]*")) { + redirectTo = BowUtils.redirectTo(searchLine, null); + } else if (searchLine != null + && (searchLine.startsWith(":") || searchLine.startsWith("t:")) ) { + //On fait une recherche sur les tags + + int index = searchLine.indexOf(":"); + searchLine = searchLine.substring(index+1); //Suppresses first ":" + + session.put("user", user); + try { + BowInit.initializeToken(session, user); + } catch (NoSuchAlgorithmException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + WikittyProxy proxy = BowProxy.getInstance(); + Criteria criteria = BowBookmark.getBookmarkListCriteriaByUser(user, searchLine); + criteria = criteria.addSortDescending(Bookmark.FQ_FIELD_CLICK); + PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); //Retrieves bookmarks by search + BookmarkActions bookmarkActions = BowBookmark.createBookmarkActions(request, result, searchLine); + request.setAttribute("bookmarkActions", bookmarkActions); + request.setAttribute("token", token); + redirectTo = BowUtils.redirectTo(searchLine, null); + } else if (searchLine != null && searchLine.startsWith("f:")) { + // recherche fulltext dans bow + String fullText = searchLine.substring(2); + + session.put("user", user); + try { + BowInit.initializeToken(session, user); + } catch (NoSuchAlgorithmException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + WikittyProxy proxy = BowProxy.getInstance(); + Criteria criteria; + if (!fullText.isEmpty()) { + criteria = Search.query().keyword(fullText). + eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()).criteria(). + addFacetField(Bookmark.FQ_FIELD_TAGS); } else { - // on fait une recherche sur le moteur de recherche configure - WikittyProxy proxy = BowProxy.getInstance(); - Preference pref = proxy.restore(Preference.class, user.getWikittyId()); - - String searchEngineURL = pref.getSearchEngineUrlResults(); - if (searchEngineURL == null || "".equals(searchEngineURL)) { - BowConfig config = BowConfig.getInstance(); - searchEngineURL = config.getSearchEngine(); - } - searchEngineURL = searchEngineURL.replace("{searchTerms}", searchLine); - searchEngineURL = response.encodeRedirectURL(searchEngineURL); - redirectTo = searchEngineURL; + criteria = BowBookmark.getBookmarkListCriteriaByUser(user, null); } + PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); + BookmarkActions bookmarkActions = BowBookmark.createBookmarkActions(request, result, null); + request.setAttribute("bookmarkActions", bookmarkActions); + request.setAttribute("token", token); + redirectTo = BowUtils.redirectTo(searchLine, null); + } else if (searchLine != null && searchLine.startsWith("a:")) { + // on redirige vers l'alias demande + searchLine = searchLine.substring(2); + redirectTo = BowConfig.getInstance().getAliasUrl() + searchLine; + } else { + // on fait une recherche sur le moteur de recherche configure + WikittyProxy proxy = BowProxy.getInstance(); + Preference pref = proxy.restore(Preference.class, user.getWikittyId()); + + String searchEngineURL = pref.getSearchEngineUrlResults(); + if (searchEngineURL == null || "".equals(searchEngineURL)) { + BowConfig config = BowConfig.getInstance(); + searchEngineURL = config.getSearchEngine(); + } + searchEngineURL = searchEngineURL.replace("{searchTerms}", searchLine); + searchEngineURL = response.encodeRedirectURL(searchEngineURL); + redirectTo = searchEngineURL; } return SUCCESS; } Modified: trunk/src/main/java/org/chorem/bow/action/OpenSearchSuggestionAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/OpenSearchSuggestionAction.java 2011-02-03 14:26:21 UTC (rev 181) +++ trunk/src/main/java/org/chorem/bow/action/OpenSearchSuggestionAction.java 2011-02-03 16:09:14 UTC (rev 182) @@ -52,36 +52,34 @@ public String execute() { User user = (User)session.get("user"); - if (user != null) { - if (searchLine != null) { - OpenSearchActions openSearchActions = new OpenSearchActions(); - WikittyProxy proxy = BowProxy.getInstance(); - String[] words = searchLine.split("\\s+"); - List<String> searchLineList = new ArrayList<String>(Arrays.asList(words)); + if (searchLine != null) { + OpenSearchActions openSearchActions = new OpenSearchActions(); + WikittyProxy proxy = BowProxy.getInstance(); + String[] words = searchLine.split("\\s+"); + List<String> searchLineList = new ArrayList<String>(Arrays.asList(words)); - if (searchLine.charAt(searchLine.length() - 1) == ' ') { - searchLineList.add(""); //If the user doesn't type anything, we have to propose suggestions - } - Criteria criteria; + if (searchLine.charAt(searchLine.length() - 1) == ' ') { + searchLineList.add(""); //If the user doesn't type anything, we have to propose suggestions + } + Criteria criteria; - if (searchLineList.size() > 1) { - List<String> cpy = new ArrayList<String>(searchLineList); - cpy.remove(cpy.size() - 1); - criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()). - eq(Bookmark.FQ_FIELD_TAGS, cpy).criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); - } else { - criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()). - criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); - } - PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); - List<Bookmark> bookList = result.getAll(); - List<FacetTopic> topics = result.getTopic(Bookmark.FQ_FIELD_TAGS); - - openSearchActions.setBookmarkList(bookList); - openSearchActions.setSuggestionList(topics); - openSearchActions.findSuggestions(searchLineList); - request.setAttribute("openSearchAction", openSearchActions); + if (searchLineList.size() > 1) { + List<String> cpy = new ArrayList<String>(searchLineList); + cpy.remove(cpy.size() - 1); + criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()). + eq(Bookmark.FQ_FIELD_TAGS, cpy).criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); + } else { + criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()). + criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); } + PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); + List<Bookmark> bookList = result.getAll(); + List<FacetTopic> topics = result.getTopic(Bookmark.FQ_FIELD_TAGS); + + openSearchActions.setBookmarkList(bookList); + openSearchActions.setSuggestionList(topics); + openSearchActions.findSuggestions(searchLineList); + request.setAttribute("openSearchAction", openSearchActions); } return SUCCESS; } Modified: trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java 2011-02-03 14:26:21 UTC (rev 181) +++ trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java 2011-02-03 16:09:14 UTC (rev 182) @@ -235,49 +235,45 @@ public String execute() { User user = (User)session.get("user"); - if (user != null) { - setBookmarksImportDate(BowBookmark.getBookmarksByImportDate(request, user)); + setBookmarksImportDate(BowBookmark.getBookmarksByImportDate(request, user)); + if (update != null) { //If the user submitted the form + WikittyProxy proxy = BowProxy.getInstance(); + Preference preference = changePreference(); + proxy.store(preference); - if (update != null) { //If the user submitted the form - WikittyProxy proxy = BowProxy.getInstance(); - Preference preference = changePreference(); - proxy.store(preference); - - User newUser = proxy.restore(User.class, user.getWikittyId()); - Criteria criteria = Search.query().eq(User.FQ_FIELD_EMAIL, email).criteria(); - User find = proxy.findByCriteria(User.class, criteria); + User newUser = proxy.restore(User.class, user.getWikittyId()); + Criteria criteria = Search.query().eq(User.FQ_FIELD_EMAIL, email).criteria(); + User find = proxy.findByCriteria(User.class, criteria); - if (find == null || find.getEmail().equals(user.getEmail())) { //If this email address isn't already used by someone else - try { - newUser = changeUser(newUser); - } catch (NoSuchAlgorithmException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - newUser = proxy.store(newUser); - session.put("user", newUser); - - preference = proxy.restore(Preference.class, newUser.getWikittyId()); - session.put("preference", preference); - return "update"; + if (find == null || find.getEmail().equals(user.getEmail())) { //If this email address isn't already used by someone else + try { + newUser = changeUser(newUser); + } catch (NoSuchAlgorithmException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } - setEmail(user.getEmail()); - addActionError(getText("bow.preferences.emailAldyExists")); - return ERROR; - } else { //If the user didn't submit the form, the fields are filled with the current preferences values - Preference preference = (Preference)session.get("preference"); + newUser = proxy.store(newUser); + session.put("user", newUser); - setEmail(user.getEmail()); - if (preference != null) { - setColors(preference.getColors()); - setTagsNb(String.valueOf(preference.getTags())); - setBookmarksHomePage(String.valueOf(preference.getBookmarks())); - setSearchEngineUrlSuggestions(preference.getSearchEngineUrlSuggestions()); - setSearchEngineUrlResults(preference.getSearchEngineUrlResults()); - } + preference = proxy.restore(Preference.class, newUser.getWikittyId()); + session.put("preference", preference); + return "update"; } - return SUCCESS; + setEmail(user.getEmail()); + addActionError(getText("bow.preferences.emailAldyExists")); + return ERROR; + } else { //If the user didn't submit the form, the fields are filled with the current preferences values + Preference preference = (Preference)session.get("preference"); + + setEmail(user.getEmail()); + if (preference != null) { + setColors(preference.getColors()); + setTagsNb(String.valueOf(preference.getTags())); + setBookmarksHomePage(String.valueOf(preference.getBookmarks())); + setSearchEngineUrlSuggestions(preference.getSearchEngineUrlSuggestions()); + setSearchEngineUrlResults(preference.getSearchEngineUrlResults()); + } } - return LOGIN; + return SUCCESS; } } Added: trunk/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java =================================================================== --- trunk/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java (rev 0) +++ trunk/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java 2011-02-03 16:09:14 UTC (rev 182) @@ -0,0 +1,34 @@ +package org.chorem.bow.interceptor; + +import java.util.Map; + +import org.apache.struts2.ServletActionContext; +import org.chorem.bow.User; + +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.ActionInvocation; +import com.opensymphony.xwork2.interceptor.AbstractInterceptor; + +public class AldyLoggedInterceptor extends AbstractInterceptor { + private static final long serialVersionUID = -2411549996072421471L; + protected String redirect; + + /** + * @param redirect the redirect to set + */ + public void setRedirect(String redirect) { + this.redirect = redirect; + } + + @Override + public String intercept(ActionInvocation invocation) throws Exception { + Map<String, Object> session = ActionContext.getContext().getSession(); + + if ((User)session.get("user") != null) { + ServletActionContext.getResponse().sendRedirect(redirect); + return null; + } + return invocation.invoke(); + } + +} Property changes on: trunk/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java =================================================================== --- trunk/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java 2011-02-03 14:26:21 UTC (rev 181) +++ trunk/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java 2011-02-03 16:09:14 UTC (rev 182) @@ -2,6 +2,7 @@ import java.util.Map; +import org.apache.struts2.ServletActionContext; import org.chorem.bow.BowInit; import org.chorem.bow.BowUtils; import org.chorem.bow.User; @@ -12,7 +13,15 @@ public class LoginInterceptor extends AbstractInterceptor { private static final long serialVersionUID = -7520186185205372272L; + protected String redirect; + /** + * @param redirect the redirect to set + */ + public void setRedirect(String redirect) { + this.redirect = redirect; + } + @Override public String intercept(ActionInvocation invocation) throws Exception { Map<String, Object> session = ActionContext.getContext().getSession(); @@ -22,8 +31,15 @@ String[] token = (String[])toto.get("token"); if (token != null && !token[0].isEmpty()) { - BowInit.initSession(session, BowUtils.checkToken(token[0], session)); + User user = BowUtils.checkToken(token[0], session); + + if (user != null) { + BowInit.initSession(session, user); + return invocation.invoke(); + } } + ServletActionContext.getResponse().sendRedirect(redirect); + return null; } return invocation.invoke(); } Modified: trunk/src/main/resources/i18n/bow_fr_FR.properties =================================================================== --- trunk/src/main/resources/i18n/bow_fr_FR.properties 2011-02-03 14:26:21 UTC (rev 181) +++ trunk/src/main/resources/i18n/bow_fr_FR.properties 2011-02-03 16:09:14 UTC (rev 182) @@ -25,7 +25,7 @@ bow.home.title=Accueil bow.label.locale.english= bow.label.locale.french= -bow.login.authenticationFailure=Soit votre adresse email n''existe pas, soit votre vot de passe est eronn\u00E9 +bow.login.authenticationFailure=Soit votre adresse email n''existe pas, soit votre mot de passe est eronn\u00E9 bow.login.email=Email bow.login.email.required=Veuillez entrer votre adresse email bow.login.email.wrongformat=Votre adresse email est invalide Modified: trunk/src/main/resources/struts.xml =================================================================== --- trunk/src/main/resources/struts.xml 2011-02-03 14:26:21 UTC (rev 181) +++ trunk/src/main/resources/struts.xml 2011-02-03 16:09:14 UTC (rev 182) @@ -8,16 +8,29 @@ <!-- <default-action-ref name="" />--><!-- TODO: action à lancer quand une action n'existe pas --> <package name="login" extends="struts-default"> + <interceptors> + <interceptor name="aldyLogged" class="org.chorem.bow.interceptor.AldyLoggedInterceptor"> + <param name="redirect">home.action</param> + </interceptor> + <interceptor-stack name="aldyLoggedStack"> + <interceptor-ref name="aldyLogged" /> + <interceptor-ref name="defaultStack" /> + </interceptor-stack> + </interceptors> <action name="register_*" method="{1}" class="org.chorem.bow.action.RegisterAction"> + <interceptor-ref name="aldyLoggedStack" /> <result name="input">/jsp/register.jsp</result> <result type="redirectAction">home</result> </action> <action name="forgotPassword_*" method="{1}" class="org.chorem.bow.action.ForgotPasswordAction"> + <interceptor-ref name="aldyLoggedStack" /> <result name="input">/jsp/forgotPassword.jsp</result> - <result>/home.action</result> + <result type="redirectAction">login_input</result> </action> <action name="login_*" method="{1}" class="org.chorem.bow.action.LoginAction"> + <interceptor-ref name="aldyLoggedStack" /> <result name="input">/jsp/login.jsp</result> + <result name="login" type="redirectAction">home</result> <result type="redirectAction">home</result> </action> <action name="logout" class="org.chorem.bow.action.LogoutAction"> @@ -26,75 +39,109 @@ </package> <package name="bookmark" extends="struts-default"> + <interceptors> + <interceptor name="login" class="org.chorem.bow.interceptor.LoginInterceptor"> + <param name="redirect">login_input.action</param> + </interceptor> + <interceptor-stack name="loginStack"> + <interceptor-ref name="login" /> + <interceptor-ref name="defaultStack" /> + </interceptor-stack> + </interceptors> <action name="importBookmarks" class="org.chorem.bow.action.ImportBookmarksAction"> + <interceptor-ref name="loginStack" /> <result name="error" type="redirectAction">error</result> - <result name="login" type="redirectAction">login_input</result> <result type="redirect">${redirectTo}</result> </action> - <action name="exportBookmarks" class="org.chorem.bow.action.ExportBookmarksAction" /> + <action name="exportBookmarks" class="org.chorem.bow.action.ExportBookmarksAction"> + <interceptor-ref name="loginStack" /> + </action> <action name="modifyBookmark" class="org.chorem.bow.action.ModifyBookmarkAction"> + <interceptor-ref name="loginStack" /> <result type="redirectAction">home</result> </action> <action name="removeBookmark" class="org.chorem.bow.action.RemoveBookmarkAction"> + <interceptor-ref name="loginStack" /> <result type="redirect">${redirectTo}</result> </action> <action name="editBookmark" class="org.chorem.bow.action.EditBookmarkAction"> + <interceptor-ref name="loginStack" /> <result name="home" type="redirectAction">home</result> <result name="search">/jsp/search.jsp</result> </action> <action name="deleteImport" class="org.chorem.bow.action.DeleteImportAction"> + <interceptor-ref name="loginStack" /> <result type="redirectAction">preferences</result> </action> <action name="addUrl" class="org.chorem.bow.action.AddUrlAction"> + <interceptor-ref name="loginStack" /> <result type="redirect">${redirectTo}</result> </action> </package> <package name="search" extends="struts-default"> <interceptors> - <interceptor name="login" class="org.chorem.bow.interceptor.LoginInterceptor" /> + <interceptor name="login" class="org.chorem.bow.interceptor.LoginInterceptor"> + <param name="redirect">login_input.action</param> + </interceptor> <interceptor-stack name="loginStack"> <interceptor-ref name="login" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <action name="search" class="org.chorem.bow.action.SearchAction"> - <result>/jsp/search.jsp</result> + <interceptor-ref name="loginStack" /> + <result>/jsp/search.jsp</result> </action> <action name="fullText" class="org.chorem.bow.action.FullTextSearchAction"> - <result>/jsp/search.jsp</result> + <interceptor-ref name="loginStack" /> + <result>/jsp/search.jsp</result> </action> <action name="order" class="org.chorem.bow.action.OrderAction"> - <result>/jsp/search.jsp</result> + <interceptor-ref name="loginStack" /> + <result>/jsp/search.jsp</result> </action> <action name="openSearchResult" class="org.chorem.bow.action.OpenSearchResultAction"> <interceptor-ref name="loginStack" /> <result type="redirect">${redirectTo}</result> </action> <action name="openSearchSuggestion" class="org.chorem.bow.action.OpenSearchSuggestionAction"> - <result>/jsp/suggestions.jsp</result> + <interceptor-ref name="loginStack" /> + <result>/jsp/suggestions.jsp</result> </action> <action name="deleteSearchResults" class="org.chorem.bow.action.DeleteSearchResultsAction"> - <result type="redirectAction">home</result> + <interceptor-ref name="loginStack" /> + <result type="redirectAction">home</result> </action> </package> <package name="misc" extends="struts-default"> + <interceptors> + <interceptor name="login" class="org.chorem.bow.interceptor.LoginInterceptor"> + <param name="redirect">login_input.action</param> + </interceptor> + <interceptor-stack name="loginStack"> + <interceptor-ref name="login" /> + <interceptor-ref name="defaultStack" /> + </interceptor-stack> + </interceptors> <action name="home" class="org.chorem.bow.action.HomeAction"> - <result name="login" type="redirectAction">login_input</result> + <interceptor-ref name="loginStack" /> <result>/jsp/home.jsp</result> </action> <action name="locale" class="org.chorem.bow.action.LocaleAction"> <result type="redirect">/jsp/login.jsp</result> </action> <action name="generateToken" class="org.chorem.bow.action.GenerateTokenAction"> - <result name="login" type="redirectAction">login_input</result> + <interceptor-ref name="loginStack" /> <result type="redirectAction">preferences</result> </action> <action name="deleteTag" class="org.chorem.bow.action.DeleteTagAction"> + <interceptor-ref name="loginStack" /> <result type="redirect">${redirectTo}</result> </action> <action name="addClick" class="org.chorem.bow.action.AddClickAction"> + <interceptor-ref name="loginStack" /> <result name="error" type="redirectAction">home</result> <result type="redirect">${link}</result> </action> @@ -102,16 +149,18 @@ <result>/jsp/{1}Xml.jsp</result> </action> <action name="preferences" class="org.chorem.bow.action.PreferencesAction"> - <result name="login" type="redirectAction">login_input</result> + <interceptor-ref name="loginStack" /> <result name="update" type="redirectAction">preferences</result> <result name="error">/jsp/preferences.jsp</result> <result>/jsp/preferences.jsp</result> </action> <action name="admin"> + <interceptor-ref name="loginStack" /> <result name="error">/jsp/login.jsp</result> <result>/jsp/admin.jsp</result> </action> <action name="reIndexation" class="org.chorem.bow.action.ReIndexationAction"> + <interceptor-ref name="loginStack" /> <result>/jsp/admin.jsp</result> </action> </package>
participants (1)
-
vbriand@users.chorem.org