All Downloads are FREE. Search and download functionalities are using the official Maven repository.

models.daos.OAuth2InfoDAO.scala Maven / Gradle / Ivy

The newest version!
package models.daos

import com.mohiva.play.silhouette.api.LoginInfo
import com.mohiva.play.silhouette.impl.daos.DelegableAuthInfoDAO
import com.mohiva.play.silhouette.impl.providers.OAuth2Info
import com.mongodb.casbah.Imports
import com.mongodb.casbah.Imports._
import models.Database

/**
 * The DAO to store the OAuth2 information.
 *
 */
class OAuth2InfoDAO extends DelegableAuthInfoDAO[OAuth2Info] with AuthInfoDAO[OAuth2Info] {

  override def data: Imports.MongoCollection = Database.db("oAuth2Info")

  override def loadFromDB(dbAuthInfo: DBObject): OAuth2Info = {
    val params = dbAuthInfo.getAs[DBObject]("params").map(_.map(e => e._1 -> e._2.toString).toMap)
    OAuth2Info(
      Database.loadString(dbAuthInfo, "accessToken"),
      Database.loadOptionalString(dbAuthInfo, "tokenType"),
      Database.loadOptionalString(dbAuthInfo, "expiresIn").map(_.toInt),
      Database.loadOptionalString(dbAuthInfo, "refreshToken"),
      params
    )
  }

  override def convertToDB(loginInfo: LoginInfo, authInfo: OAuth2Info): DBObject = {

    MongoDBObject(
      "providerID" -> loginInfo.providerID,
      "providerKey" -> loginInfo.providerKey,
      "accessToken" -> authInfo.accessToken,
      "tokenType" -> authInfo.tokenType,
      "expiresIn" -> authInfo.expiresIn,
      "refreshToken" -> authInfo.refreshToken,
      "params" -> authInfo.params
    )
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy