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