Skip to content

Commit 2b4d337

Browse files
admin: edit Administrator
1 parent 528d25d commit 2b4d337

File tree

6 files changed

+144
-1
lines changed

6 files changed

+144
-1
lines changed

src/main/java/org/woehlke/greenshop/admin/service/AdministratorService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ public interface AdministratorService extends UserDetailsService {
1414

1515
Administrator findAdministratorById(long administratorId);
1616

17+
void update(Administrator thisAdministrator);
1718
}

src/main/java/org/woehlke/greenshop/admin/service/AdministratorServiceImpl.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
import javax.inject.Inject;
1212
import javax.inject.Named;
13+
import java.security.MessageDigest;
14+
import java.security.NoSuchAlgorithmException;
1315
import java.util.List;
1416

1517
/**
@@ -32,10 +34,36 @@ public Administrator findAdministratorById(long administratorId) {
3234
return administratorRepository.findOne(administratorId);
3335
}
3436

37+
@Override
38+
@Transactional(readOnly=false,propagation=Propagation.REQUIRES_NEW)
39+
public void update(Administrator thisAdministrator) {
40+
Administrator original = administratorRepository.findOne(thisAdministrator.getId());
41+
if(original.getUserPassword().compareTo(thisAdministrator.getUserPassword())!=0){
42+
thisAdministrator.setUserPassword(md5(thisAdministrator.getUserPassword()));
43+
}
44+
thisAdministrator = administratorRepository.save(thisAdministrator);
45+
}
46+
3547
@Override
3648
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
3749
Administrator administrator = administratorRepository.findByUserName(username);
3850
if(administrator == null) throw new UsernameNotFoundException(username);
3951
return new AdministratorBean(administrator);
4052
}
53+
54+
private String md5(String input){
55+
MessageDigest md = null;
56+
try {
57+
md = MessageDigest.getInstance("MD5");
58+
} catch (NoSuchAlgorithmException e) {
59+
e.printStackTrace();
60+
}
61+
md.update(input.getBytes());
62+
byte[] digest = md.digest();
63+
StringBuffer sb = new StringBuffer();
64+
for (byte b : digest) {
65+
sb.append(String.format("%02x", b & 0xff));
66+
}
67+
return sb.toString();
68+
}
4169
}

src/main/java/org/woehlke/greenshop/admin/web/configuration/AdministratorController.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.springframework.stereotype.Controller;
44
import org.springframework.ui.Model;
5+
import org.springframework.validation.BindingResult;
56
import org.springframework.web.bind.annotation.PathVariable;
67
import org.springframework.web.bind.annotation.RequestMapping;
78
import org.springframework.web.bind.annotation.RequestMethod;
@@ -10,6 +11,7 @@
1011
import org.woehlke.greenshop.admin.service.AdministratorService;
1112

1213
import javax.inject.Inject;
14+
import javax.validation.Valid;
1315
import java.util.List;
1416

1517
/**
@@ -53,4 +55,34 @@ public String administratorId(
5355
model.addAttribute("administrators",administrators);
5456
return "admin/configuration/administrators";
5557
}
58+
59+
@RequestMapping(value = "/admin/administrators/{administratorId}/edit", method = RequestMethod.GET)
60+
public String administratorEditForm(
61+
@PathVariable long administratorId, Model model){
62+
int menuCategory = AdminMenuCategory.CONFIGURATION.ordinal();
63+
model.addAttribute("menuCategory",menuCategory);
64+
Administrator thisAdministrator = administratorService.findAdministratorById(administratorId);
65+
model.addAttribute("thisAdministrator",thisAdministrator);
66+
List<Administrator> administrators = administratorService.findAllAdministrators();
67+
model.addAttribute("administrators",administrators);
68+
return "admin/configuration/administratorsEdit";
69+
}
70+
71+
@RequestMapping(value = "/admin/administrators/{administratorId}/edit", method = RequestMethod.POST)
72+
public String administratorEditSave(
73+
@PathVariable long administratorId,
74+
@Valid Administrator thisAdministrator, BindingResult result, Model model){
75+
int menuCategory = AdminMenuCategory.CONFIGURATION.ordinal();
76+
model.addAttribute("menuCategory",menuCategory);
77+
if(result.hasErrors()){
78+
model.addAttribute("thisAdministrator",thisAdministrator);
79+
List<Administrator> administrators = administratorService.findAllAdministrators();
80+
model.addAttribute("administrators",administrators);
81+
return "admin/configuration/administratorsEdit";
82+
} else {
83+
thisAdministrator.setId(administratorId);
84+
administratorService.update(thisAdministrator);
85+
return "redirect:/admin/administrators/"+administratorId;
86+
}
87+
}
5688
}

src/main/webapp/WEB-INF/jsp/admin/admin-tiles.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@
5555
<put-attribute name="bodyContent" value="/WEB-INF/jsp/admin/configuration/administrators.jsp" />
5656
</definition>
5757

58+
<definition name="admin/configuration/administratorsEdit" extends="backend">
59+
<put-attribute name="bodyContent" value="/WEB-INF/jsp/admin/configuration/administratorsEditForm.jsp" />
60+
</definition>
61+
5862

5963
<!-- currencies -->
6064

src/main/webapp/WEB-INF/jsp/admin/configuration/administrators.jsp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
</table>
5858
<table border="0" width="100%" cellspacing="0" cellpadding="2">
5959
<tr>
60-
<td align="center" class="infoBoxContent"><span class="tdbLink"><a id="tdb2" href="http://localhost/oscommerce2/admin/administrators.php?aID=2&action=edit">Edit</a></span><script type="text/javascript">$("#tdb2").button({icons:{primary:"ui-icon-document"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script><span class="tdbLink"><a id="tdb3" href="http://localhost/oscommerce2/admin/administrators.php?aID=2&action=delete">Delete</a></span><script type="text/javascript">$("#tdb3").button({icons:{primary:"ui-icon-trash"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script></td>
60+
<td align="center" class="infoBoxContent"><span class="tdbLink"><a id="tdb2" href="<c:url value="/admin/administrators/${thisAdministrator.id}/edit"/>">Edit</a></span><script type="text/javascript">$("#tdb2").button({icons:{primary:"ui-icon-document"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script><span class="tdbLink"><a id="tdb3" href="http://localhost/oscommerce2/admin/administrators.php?aID=2&action=delete">Delete</a></span><script type="text/javascript">$("#tdb3").button({icons:{primary:"ui-icon-trash"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script></td>
6161
</tr>
6262
</table>
6363
</td>
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<%@ include file="/WEB-INF/layout/taglibs.jsp"%>
2+
3+
<table border="0" width="100%" cellspacing="0" cellpadding="2">
4+
<tr>
5+
<td><table border="0" width="100%" cellspacing="0" cellpadding="0">
6+
<tr>
7+
<td class="pageHeading">Administrators</td>
8+
<td class="pageHeading" align="right"><img src="resources/admin/images/pixel_trans.gif" border="0" alt="" width="57" height="40" /></td>
9+
</tr>
10+
</table></td>
11+
</tr>
12+
<!--
13+
<tr>
14+
<td>
15+
<table border="0" width="100%" cellspacing="0" cellpadding="2">
16+
<tr class="messageStackError">
17+
<td class="messageStackError"><img src="resources/admin/images/icons/error.gif" border="0" alt="Error" title="Error" />&nbsp;<strong>Additional Protection With htaccess/htpasswd</strong><p>This osCommerce Online Merchant Administration Tool installation is not additionally secured through htaccess/htpasswd means.</p><p>Enabling the htaccess/htpasswd security layer will automatically store administrator username and passwords in a htpasswd file when updating administrator password records.</p><p><strong>Please note</strong>, if this additional security layer is enabled and you can no longer access the Administration Tool, please make the following changes and consult your hosting provider to enable htaccess/htpasswd protection:</p><p><u><strong>1. Edit this file:</strong></u><br /><br />/opt/local/apache2/htdocs/oscommerce2/admin/.htaccess</p><p>Remove the following lines if they exist:</p><p><i>##### OSCOMMERCE ADMIN PROTECTION - BEGIN #####<br />AuthType Basic<br />AuthName "osCommerce Online Merchant Administration Tool"<br />AuthUserFile /opt/local/apache2/htdocs/oscommerce2/admin/.htpasswd_oscommerce<br />Require valid-user<br />##### OSCOMMERCE ADMIN PROTECTION - END #####</i></p><p><u><strong>2. Delete this file:</strong></u><br /><br />/opt/local/apache2/htdocs/oscommerce2/admin/.htpasswd_oscommerce</p></td>
18+
</tr>
19+
</table>
20+
</td>
21+
</tr>
22+
-->
23+
<tr>
24+
<td><table border="0" width="100%" cellspacing="0" cellpadding="0">
25+
<tr>
26+
<td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
27+
<tr class="dataTableHeadingRow">
28+
<td class="dataTableHeadingContent">Administrators</td>
29+
<td class="dataTableHeadingContent" align="center">Secured by htpasswd</td>
30+
<td class="dataTableHeadingContent" align="right">Action&nbsp;</td>
31+
</tr>
32+
<c:forEach var="administrator" items="${administrators}">
33+
<c:if test="${administrator.id == thisAdministrator.id}">
34+
<tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href='<c:url value="/admin/administrators/${administrator.id}"/>'">
35+
<td class="dataTableContent">${administrator.userName}</td>
36+
<td class="dataTableContent" align="center"><img src="resources/admin/images/icon_status_red.gif" border="0" alt="Not Secured" title="Not Secured" width="10" height="10" /></td>
37+
<td class="dataTableContent" align="right"><img src="resources/admin/images/icon_arrow_right.gif" border="0" alt="" />&nbsp;</td>
38+
</tr>
39+
</c:if>
40+
<c:if test="${administrator.id != thisAdministrator.id}">
41+
<tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href='<c:url value="/admin/administrators/${administrator.id}"/>'">
42+
<td class="dataTableContent">${administrator.userName}</td>
43+
<td class="dataTableContent" align="center"><img src="resources/admin/images/icon_status_red.gif" border="0" alt="Not Secured" title="Not Secured" width="10" height="10" /></td>
44+
<td class="dataTableContent" align="right"><a href="<c:url value="/admin/administrators/${administrator.id}"/>"><img src="resources/admin/images/icon_info.gif" border="0" alt="Info" title="Info" /></a>&nbsp;</td>
45+
</tr>
46+
</c:if>
47+
</c:forEach>
48+
<tr>
49+
<td class="smallText" colspan="3" align="right"><span class="tdbLink"><a id="tdb1" href="http://localhost/oscommerce2/admin/administrators.php?action=new">Insert</a></span><script type="text/javascript">$("#tdb1").button({icons:{primary:"ui-icon-plus"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script></td>
50+
</tr>
51+
</table></td>
52+
<td width="25%" valign="top">
53+
<table border="0" width="100%" cellspacing="0" cellpadding="2">
54+
<tr class="infoBoxHeading">
55+
<td class="infoBoxHeading"><strong>${thisAdministrator.userName}</strong></td>
56+
</tr>
57+
</table>
58+
<form:form commandName="thisAdministrator" method="post" autocomplete="off"><form:hidden path="id"/>
59+
<table border="0" width="100%" cellspacing="0" cellpadding="2">
60+
<tr>
61+
<td class="infoBoxContent">Please make any necessary changes</td>
62+
</tr>
63+
<tr>
64+
<td class="infoBoxContent"><br />Username:<br /><form:input path="userName" maxlength="40"/><form:errors path="userName" /></td>
65+
</tr>
66+
<tr>
67+
<td class="infoBoxContent"><br />New Password:<br /><form:password path="userPassword" maxlength="40"/><form:errors path="userPassword" /></td>
68+
</tr>
69+
<tr>
70+
<td align="center" class="infoBoxContent"><br /><span class="tdbLink"><button id="tdb2" type="submit">Save</button></span><script type="text/javascript">$("#tdb2").button({icons:{primary:"ui-icon-disk"}}).addClass("ui-priority-primary").parent().removeClass("tdbLink");</script><span class="tdbLink"><a id="tdb3" href="<c:url value="/admin/administrators/${thisAdministrator.id}"/>">Cancel</a></span><script type="text/javascript">$("#tdb3").button({icons:{primary:"ui-icon-close"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script></td>
71+
</tr>
72+
</table>
73+
</form:form>
74+
</td>
75+
</tr>
76+
</table></td>
77+
</tr>
78+
</table>

0 commit comments

Comments
 (0)