Skip to content

Instantly share code, notes, and snippets.

@aeischeid
Last active August 29, 2015 14:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aeischeid/a290876c2e0c2918401b to your computer and use it in GitHub Desktop.
Save aeischeid/a290876c2e0c2918401b to your computer and use it in GitHub Desktop.
SpringSecurity Rest Plugin Gorm Setup
package org.some.place
class AuthToken {
String tokenValue
String username
Date refreshed = new Date()
static constraints = {
}
static mapping = {
version false
}
def beforeInsert() {
// lets limit to 25 tokens per user.
def userTokens = AuthToken.countByUsername(username)
// delete oldest one if there are more than desired number of tokens
if (userTokens > 24) {
// default sort should be by pkey id which is sequence based and should be defalt ORDER BY
// TODO: use more efficient query for deleting surplus tokens.
//AuthToken.executeUpdate('delete from AuthToken where username = ? limit 1', [username])
AuthToken at = AuthToken.findByUsername(username)
at.delete()
}
}
def afterLoad() {
// if being accessed and it is more than a day since last marked as refreshed
// and it hasn't been wiped out by Quartz job (it exists, duh)
// then refresh it
if (refreshed < new Date() -1) {
refreshed = new Date()
it.save()
}
}
}
package org.some.place
class RemoveStaleTokensJob {
static triggers = {
cron name: 'everyDay2AM', cronExpression: '0 0 2 ? * *'
}
void execute() {
log.debug("Starting job ${this.class.simpleName}")
AuthToken.executeUpdate('delete AuthToken a where a.refreshed < ?' [new Date()-1])
log.debug("Finished job ${this.class.simpleName}")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment