scala-news-reader

rss/atom news reader in scala

git clone https://9o.is/git/scala-news-reader.git

InviteToken.scala

(1506B)


      1 package com.joereader.model
      2 
      3 import org.joda.time.{Days, ReadablePeriod, Hours}
      4 import net.liftweb._
      5 import common._
      6 import http.{S, StringField => _, BooleanField => _, _}
      7 import mongodb.record._
      8 import mongodb.record.field._
      9 import net.liftweb.record.field._
     10 import org.bson.types.ObjectId
     11 import net.liftmodules.mongoauth.field.ExpiresField
     12 
     13 /**
     14  * This is a token to automatically invite a user if a blog owner claims him as writer.
     15  */
     16 class InviteToken private () extends MongoRecord[InviteToken] with ObjectIdPk[InviteToken] {
     17   def meta = InviteToken
     18 
     19   object name extends StringField(this, 254)
     20   object email extends EmailField(this, 254)
     21   object blogId extends ObjectIdField(this)
     22   object expires extends ExpiresField(this, meta.inviteTokenExpires)
     23 
     24   def url: String = meta.url(this)
     25 }
     26 
     27 object InviteToken extends InviteToken with MongoMetaRecord[InviteToken] {
     28 
     29   override def collectionName = "user.invitetokens"
     30 
     31   lazy val inviteTokenUrl = "/invite-token"
     32   lazy val inviteTokenExpires: ReadablePeriod = Days.days(30)
     33 
     34   def url(inst: InviteToken): String = "%s%s?token=%s".
     35     format(S.hostAndPath, inviteTokenUrl, inst.id.toString())
     36 
     37   def create(email: String, name: String, blogId: ObjectId): InviteToken =
     38     createRecord.email(email).name(name).blogId(blogId).save
     39 
     40   def deleteAllByEmail(e: String) { delete(email.name, e) }
     41 
     42   def findByStringId(in: String): Box[InviteToken] =
     43     if (ObjectId.isValid(in)) find(new ObjectId(in))
     44     else Failure("Invalid ObjectId: "+in)
     45 }
     46