1

play2 scala zentasks サンプル アプリケーションでは、コード スニペットは次のようになります。

def IsAuthenticated(f: => String => Request[AnyContent] => Result) = 
    Security.Authenticated(username, onUnauthorized) { user =>
    Action(request => f(user)(request))
  }

私がする必要があるのは、モデルでこの関数を呼び出すことです

def AddOnline(email: String, contact: Contact) = {
DB.withConnection { implicit connection =>
  SQL(
    """
      update contact
      set online_status = {'online'} //I want to write the value contact.status=online
      where email = {email}
    """
  ).on(
    'email -> contact.email,
    'online_status -> contact.online_status
  ).executeUpdate()
}

}

しかし、ここでの私の課題はAddOnline、特定のユーザーが上記のコードによって認証されるたびにこの関数を呼び出すことです。誰かがこれについてどうすればよいか提案できますか? 私はこれについての初心者であり、何の進歩も見られずにぐるぐる回っています

4

1 に答える 1

2

次のようにaddOnlineメソッドを呼び出すことができます。IsAuthenticated

 def IsAuthenticated(f: => String => Request[AnyContent] => Result) = 
   Security.Authenticated(username, onUnauthorized) { user =>
   // Do what you need to do here before the action is called
   Contact.addOnline(user)
   Action(request => f(user)(request))
 }

userはユーザー オブジェクトではなく、認証されたユーザーの電子メールであることに注意してください。

また、オンライン ステータスを追加するだけuserなので、AddOnline メソッドを次のように単純化できるようです。

def addOnline(email: String) = {
  DB.withConnection { implicit connection =>
    SQL(
      """
        update contact
        set online_status = 'online'
        where email = {email}
      """
    ).on(
      'email -> email,
  ).executeUpdate()
}
于 2012-11-06T07:01:25.753 に答える