Index: trunk/src/grails-app/controllers/AssignedPersonDetailedController.groovy
===================================================================
--- trunk/src/grails-app/controllers/AssignedPersonDetailedController.groovy	(revision 96)
+++ trunk/src/grails-app/controllers/AssignedPersonDetailedController.groovy	(revision 97)
@@ -1,5 +1,5 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
 
-class AssignedPersonController extends BaseController {
+class AssignedPersonDetailedController extends BaseController {
     
     def index = { redirect(action:list,params:params) }
Index: trunk/src/grails-app/controllers/PersonController.groovy
===================================================================
--- trunk/src/grails-app/controllers/PersonController.groovy	(revision 96)
+++ trunk/src/grails-app/controllers/PersonController.groovy	(revision 97)
@@ -1,6 +1,6 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
 
-@Secured(['ROLE_AppAdmin', 'ROLE_Manager'])
-class PersonController {
+@Secured(['ROLE_Manager'])
+class PersonController extends BaseAppAdminController {
 
 	def authenticateService
@@ -54,13 +54,13 @@
 				Authority.findAll().each { it.removeFromPersons(person) }
                 
-//                 try {
-                    person.delete(flush:true)
+                try {
+                    person.delete()
                     flash.message = "Person $params.id deleted."
-//                 }
-//                 catch(Exception e) {
-//                     flash.message = "Could not delete '$person.loginName' due to database constraints, but all authorities have been removed."
-//                     redirect action: edit, id: person.id
-//                 }
-
+                    redirect(action:list)
+                }
+                catch(org.springframework.dao.DataIntegrityViolationException e) {
+                    flash.message = "Could not delete '$person.loginName' due to database constraints, but all authorities have been removed."
+                    redirect(action:show,id:params.id)
+                }
 			}
 		}
@@ -68,6 +68,4 @@
 			flash.message = "Person not found with id $params.id"
 		}
-
-		redirect action: list
 	}
 
@@ -100,5 +98,5 @@
 			person.errors.rejectValue 'version', "person.optimistic.locking.failure",
 				"Another user has updated this Person while you were editing."
-				render view: 'edit', model: buildPersonModel(person)
+            render view: 'edit', model: buildPersonModel(person)
 			return
 		}
@@ -106,11 +104,11 @@
 		person.properties = params
 
-        if (person.pass != "") {
-            if (!person.hasErrors()) {
+        if(params.pass == "") {
+            person.pass = "InsertNothingToClearValidation"
+        }
+        else {
+            if (person.validate()) {
                 person.password = authenticateService.encodePassword(params.pass)
             }
-        }
-        else {
-            person.pass = "NothingToClearValidation"
         }
 
@@ -118,4 +116,5 @@
             Authority.findAll().each { it.removeFromPersons(person) }
             addRoles(person)
+            flash.message = "Person '$params.id - $params.loginName' updated."
             redirect action: show, id: person.id
         }
Index: trunk/src/grails-app/views/person/create.gsp
===================================================================
--- trunk/src/grails-app/views/person/create.gsp	(revision 96)
+++ trunk/src/grails-app/views/person/create.gsp	(revision 97)
@@ -91,5 +91,5 @@
 
 					<tr class="prop">
-						<td valign="top" class="name" align="left">Assign Roles:</td>
+						<td valign="top" class="name" align="left">Authorities:</td>
 					</tr>
 
Index: trunk/src/grails-app/views/person/edit.gsp
===================================================================
--- trunk/src/grails-app/views/person/edit.gsp	(revision 96)
+++ trunk/src/grails-app/views/person/edit.gsp	(revision 97)
@@ -59,5 +59,5 @@
 						<td valign="top" class="name"><label for="pass">Password:</label></td>
 						<td valign="top" class="value ${hasErrors(bean:person,field:'pass','errors')}">
-							<input type="password" id="pass" name="pass"/>
+							<input type="password" id="pass" name="pass"  value="${person.pass?.encodeAsHTML()}"/>
 						</td>
 					</tr>
@@ -98,16 +98,14 @@
                     </tr>
 
-					<tr class="prop">
-						<td valign="top" class="name"><label for="authorities">Authorities:</label></td>
-						<td valign="top" class="value ${hasErrors(bean:person,field:'authorities','errors')}">
-							<ul>
-							<g:each var="entry" in="${roleMap}">
-								<li>${entry.key.authority.encodeAsHTML()}
-									<g:checkBox name="${entry.key.authority}" value="${entry.value}"/>
-								</li>
-							</g:each>
-							</ul>
-						</td>
-					</tr>
+                    <tr class="prop">
+                        <td valign="top" class="name" align="left">Authorities:</td>
+                    </tr>
+
+                    <g:each var="entry" in="${roleMap}">
+                    <tr>
+                        <td valign="top" class="name" align="left">${entry.key.authority.encodeAsHTML()}</td>
+                        <td align="left"><g:checkBox name="${entry.key.authority}" value="${entry.value}"/></td>
+                    </tr>
+                    </g:each>
 
 				</tbody>
