Changeset 150 for trunk/grails-app/controllers/PersonController.groovy
- Timestamp:
- Oct 9, 2009, 10:11:43 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/grails-app/controllers/PersonController.groovy
r149 r150 7 7 def filterService 8 8 9 10 9 // the delete, save and update actions only accept POST requests 10 static Map allowedMethods = [delete: 'POST', save: 'POST', update: 'POST'] 11 11 12 13 14 12 def index = { 13 redirect action: list, params: params 14 } 15 15 16 16 def list = { … … 27 27 } 28 28 29 29 def show = { 30 30 31 31 // In the case of an actionSubmit button, rewrite action name from 'index'. … … 33 33 { params.action='show' } 34 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 35 def person = Person.get(params.id) 36 if (!person) { 37 flash.message = "Person not found with id $params.id" 38 redirect action: list 39 return 40 } 41 List roleNames = [] 42 for (role in person.authorities) { 43 roleNames << role.authority 44 } 45 roleNames.sort { n1, n2 -> 46 n1 <=> n2 47 } 48 [person: person, roleNames: roleNames] 49 } 50 50 51 52 53 54 55 51 /** 52 * Person delete action. Before removing an existing person, 53 * they should be removed from those authorities which they are involved. 54 */ 55 def delete = { 56 56 57 58 59 60 61 62 57 def person = Person.get(params.id) 58 if (person) { 59 def authPrincipal = authenticateService.principal() 60 // Avoid self-delete. 61 if (!(authPrincipal instanceof String) && authPrincipal.username == person.loginName) { 62 flash.message = "You cannot delete yourself, please login as another manager and try again." 63 63 redirect(action:show,id:params.id) 64 65 66 67 64 } 65 else { 66 //first, delete this person from Persons_Authorities table. 67 Authority.findAll().each { it.removeFromPersons(person) } 68 68 person.isActive = false 69 69 person.save(flush: true) … … 78 78 redirect(action:show,id:params.id) 79 79 } 80 81 82 83 84 85 80 } 81 } 82 else { 83 flash.message = "Person not found with id $params.id" 84 } 85 } 86 86 87 87 def edit = { 88 88 89 89 // In the case of an actionSubmit button, rewrite action name from 'index'. … … 91 91 { params.action='edit' } 92 92 93 94 95 96 97 98 99 flash.message = "To allow login at least the 'ROLE_AppUser' authority must be given."100 101 93 def person = Person.get(params.id) 94 if (!person) { 95 flash.message = "Person not found with id $params.id" 96 redirect action: list 97 return 98 } 99 params.message = "To allow login at least the 'ROLE_AppUser' authority must be given." 100 return buildPersonModel(person) 101 } 102 102 103 104 105 106 103 /** 104 * Person update action. 105 */ 106 def update = { 107 107 108 109 110 111 112 113 108 def person = Person.get(params.id) 109 if (!person) { 110 flash.message = "Person not found with id $params.id" 111 redirect action: edit, id: params.id 112 return 113 } 114 114 115 116 117 118 115 long version = params.version.toLong() 116 if (person.version > version) { 117 person.errors.rejectValue 'version', "person.optimistic.locking.failure", 118 "Another user has updated this Person while you were editing." 119 119 render view: 'edit', model: buildPersonModel(person) 120 121 120 return 121 } 122 122 123 123 person.properties = params 124 124 125 125 if(params.pass == "") { … … 142 142 } 143 143 144 144 } 145 145 146 147 flash.message = "To allow login at least the 'ROLE_AppUser' authority must be given."148 149 146 def create = { 147 params.message = "To allow login at least the 'ROLE_AppUser' authority must be given." 148 [person: new Person(params), authorityList: Authority.list()] 149 } 150 150 151 152 153 154 151 /** 152 * Person save action. 153 */ 154 def save = { 155 155 156 157 158 159 160 161 162 163 164 165 166 156 def person = new Person() 157 person.properties = params 158 person.password = authenticateService.encodePassword(params.pass) 159 if (person.save()) { 160 addRoles(person) 161 redirect action: show, id: person.id 162 } 163 else { 164 render view: 'create', model: [authorityList: Authority.list(), person: person] 165 } 166 } 167 167 168 169 170 171 172 173 174 168 private void addRoles(person) { 169 for (String key in params.keySet()) { 170 if (key.contains('ROLE') && 'on' == params.get(key)) { 171 Authority.findByAuthority(key).addToPersons(person) 172 } 173 } 174 } 175 175 176 176 private Map buildPersonModel(person) { 177 177 178 179 180 181 182 183 184 185 186 187 188 189 178 List roles = Authority.list() 179 roles.sort { r1, r2 -> 180 r1.authority <=> r2.authority 181 } 182 Set userRoleNames = [] 183 for (role in person.authorities) { 184 userRoleNames << role.authority 185 } 186 LinkedHashMap<Authority, Boolean> roleMap = [:] 187 for (role in roles) { 188 roleMap[(role)] = userRoleNames.contains(role.authority) 189 } 190 190 191 192 191 return [person: person, roleMap: roleMap] 192 } 193 193 }
Note: See TracChangeset
for help on using the changeset viewer.