Spring-Security-Coreプラグインが既にインストールされていると想定しています。このコードは、あなたが求めていることを行う必要があります。このコードをコントローラーに入れたいと思うでしょう。私は、すべての管理タスクを処理する AdminController と呼ばれるコントローラーに私のものを入れました。
def addUser= {
def userRole = SecRole.findByAuthority('ROLE_USER') ?: new SecRole(authority: 'ROLE_USER').save(failOnError: true)
def adminRole = SecRole.findByAuthority('ROLE_ADMIN') ?: new SecRole(authority: 'ROLE_ADMIN').save(failOnError: true)
/*create new user*/
def user = SecUser.findByUsername("${params.username}") ?: new SecUser (
username: params.username,
password: params.password,
enabled: true,
).save()
/*Assign a user role*/
if(params.accounttype.equals("User")){
if (!user.authorities.contains(userRole)) {
SecUserSecRole.create user, userRole
}
}
/*Assign an admin role*/
if(params.accounttype.equals("Admin")){
if (!user.authorities.contains(adminRole)) {
SecUserSecRole.create user, adminRole
}
}
}
gsp で、管理者がユーザーに特定の役割を割り当てることができる選択ボックスを作成しました
<g:form controller="admin" action="addUser">
<table>
<tr>
<td align ="right"><br>Username: <br></td>
<td><br><g:textField name="username" value=""/><br></td>
</tr>
<tr>
<td align="right"><br>Password: <br></td>
<td><br><g:textField name="password" value=""/><br></td>
</tr>
<tr>
<td align="right"><br>Choose Role:<br></td>
<td><br><g:select name="accounttype" from='${["User","Admin"]}'/><br></td>
</tr>
<tr>
<td></td>
<td><br><g:submitButton name="addUser" value="Add User" /></td></td>
</tr>
必要に応じてコードを変更します。