Author: tchemit Date: 2012-08-01 00:07:31 +0200 (Wed, 01 Aug 2012) New Revision: 3586 Url: http://chorem.org/repositories/revision/pollen/3586 Log: refs #718: Can not vote to an invited poll when I am its creatorfrom createdPoll page (admin can always access vote page) Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/SecurityService.java trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/json/GetCreatedPolls.java trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/security/PollVoteAccessRequired.java trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_en_GB.properties trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_fr_FR.properties trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/pollListHelper.jsp Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/SecurityService.java =================================================================== --- trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/SecurityService.java 2012-07-31 21:29:01 UTC (rev 3585) +++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/SecurityService.java 2012-07-31 22:07:31 UTC (rev 3586) @@ -236,7 +236,8 @@ public String isCanAccessVote(Poll poll, String accountId, - AccountIdRole accountIdRole) { + AccountIdRole accountIdRole, + UserAccount userAccount) { if (AccountIdRole.CREATOR == accountIdRole) { @@ -244,6 +245,11 @@ return null; } + if (userAccount != null && userAccount.isAdministrator()) { + // pollen admin can always access vote page + return null; + } + if (poll.isPublicResults()) { // with public results, everybody can access to vote page (but Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/json/GetCreatedPolls.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/json/GetCreatedPolls.java 2012-07-31 21:29:01 UTC (rev 3585) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/json/GetCreatedPolls.java 2012-07-31 22:07:31 UTC (rev 3586) @@ -112,12 +112,26 @@ } boolean canVote = securityService.isCanVote(poll, null, null, getPollenUserAccount()); + if (canVote) { result.add("vote"); } else { - result.add("novote"); + + // try to see if can access vote + + String canAccessVote = securityService.isCanAccessVote( + poll, null, null, getPollenUserAccount()); + + if (canAccessVote == null) { + result.add("accessVote"); + } else { + + // noaccess at all to vote page + result.add("novote"); + } } + result.add("summary"); return result; } Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/security/PollVoteAccessRequired.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/security/PollVoteAccessRequired.java 2012-07-31 21:29:01 UTC (rev 3585) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/security/PollVoteAccessRequired.java 2012-07-31 22:07:31 UTC (rev 3586) @@ -107,7 +107,7 @@ // check now poll votes can be displayed String errorMessage = securityService.isCanAccessVote( - poll, pollUri.getAccountId(), accountIdRole); + poll, pollUri.getAccountId(), accountIdRole, null); if (errorMessage != null) { Modified: trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_en_GB.properties =================================================================== --- trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_en_GB.properties 2012-07-31 21:29:01 UTC (rev 3585) +++ trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_en_GB.properties 2012-07-31 22:07:31 UTC (rev 3586) @@ -55,6 +55,7 @@ pollen.action.pollResult.help=vote count and display results for this poll pollen.action.pollSummary=Poll summary pollen.action.pollVote=Vote +pollen.action.pollAccessVote=Show votes pollen.action.pollVotingListDelete=Delete the voting list pollen.action.pollVotingListEdit=Edit that voting list pollen.action.register=Register Modified: trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_fr_FR.properties =================================================================== --- trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_fr_FR.properties 2012-07-31 21:29:01 UTC (rev 3585) +++ trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_fr_FR.properties 2012-07-31 22:07:31 UTC (rev 3586) @@ -55,6 +55,7 @@ pollen.action.pollResult.help=Dépouiller et afficher les résultats du sondage pollen.action.pollSummary=Résumé du sondage pollen.action.pollVote=Voter +pollen.action.pollAccessVote=Accèder aux votes pollen.action.pollVotingListDelete=Supprimer le groupe de votants pollen.action.pollVotingListEdit=Editer ce groupe de votants pollen.action.register=S'enregistrer Modified: trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/pollListHelper.jsp =================================================================== --- trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/pollListHelper.jsp 2012-07-31 21:29:01 UTC (rev 3585) +++ trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/pollListHelper.jsp 2012-07-31 22:07:31 UTC (rev 3586) @@ -32,6 +32,7 @@ <s:url id="voteUrl" action="votefor/" namespace="/poll"/> <s:url id='voteImg' value='/img/vote.png'/> <s:set id='voteTitle'><s:text name="pollen.action.pollVote"/></s:set> +<s:set id='accessVoteTitle'><s:text name="pollen.action.pollAccessVote"/></s:set> <s:url id='blankImg' value='/img/blank.png'/> @@ -85,6 +86,9 @@ if (cellvalue.indexOf('novote') > -1) { result += "<image src='${blankImg}'>"; } + if (cellvalue.indexOf('accessVote') > -1) { + result += formatLink("${voteUrl}" + voteId, "${voteImg}", "Vote", "${accessVoteTitle}") + } if (cellvalue.indexOf('moderate') > -1) { result += formatLink("${voteUrl}" + moderateId, "${moderateImg}", "Moderate", "${moderateTitle}") }