/src/main/g8/$application_name$/app/models/User.scala

https://github.com/dbongo/play-mongo-securesocial.g8 · Scala · 45 lines · 37 code · 8 blank · 0 comment · 0 complexity · abbccabd4638d556cdca309b7e2716a8 MD5 · raw file

  1. package models
  2. import securesocial.core.providers.Token
  3. import securesocial.core._
  4. import play.api.Play.current
  5. import com.novus.salat._
  6. import com.novus.salat.annotations._
  7. import com.novus.salat.dao._
  8. import com.mongodb.casbah.Imports._
  9. import se.radley.plugin.salat._
  10. import com.mongodb.casbah.query.dsl._
  11. import mongoContext._
  12. case class User(id: UserId, firstName: String, lastName: String, fullName: String, email: Option[String],
  13. avatarUrl: Option[String], authMethod: AuthenticationMethod,
  14. oAuth1Info: Option[OAuth1Info] = None,
  15. oAuth2Info: Option[OAuth2Info] = None,
  16. passwordInfo: Option[PasswordInfo] = None) extends Identity
  17. object User extends ModelCompanion[User, UserId] {
  18. def apply(i: Identity): User = {
  19. User(i.id, i.firstName, i.lastName, i.fullName,
  20. i.email, i.avatarUrl, i.authMethod, i.oAuth1Info,
  21. i.oAuth2Info, i.passwordInfo
  22. )
  23. }
  24. val dao = new SalatDAO[User, UserId](collection = mongoCollection("users")) {}
  25. def findOneBySocialId(socialId:UserId):Option[User] = dao.findOne(MongoDBObject("_id._id" -> socialId.id, "_id.providerId" -> socialId.providerId))
  26. def findOneByEmailAndProvider(email: String, providerId:String): Option[User] = dao.findOne(MongoDBObject("email" -> email, "authMethod.method" -> providerId))
  27. }
  28. object TokenDAO extends ModelCompanion[Token, String] {
  29. val dao = new SalatDAO[Token, String](collection = mongoCollection("tokens")) {}
  30. def findToken(uuid:String):Option[Token] = dao.findOne(MongoDBObject("uuid" -> uuid))
  31. def deleteExpiredTokens() {
  32. val now = new _root_.java.util.Date()
  33. dao.find("expirationTime" \$lte now).foreach(
  34. TokenDAO.remove(_)
  35. )
  36. }
  37. }