def getUserRoles()

in app/auth/LDAP.scala [97:129]


  def getUserRoles (uid: String)(implicit cache:SyncCacheApi) : Option[List[String]] = {
    if(connectionPool.isFailure) return None
    val cacheKey = "userRoles." + uid
    logger.debug(s"cacheKey: $cacheKey")
    logger.debug(s"cache: $cache")
    val userRoles : Option[List[String]] = cache.getOrElseUpdate[Option[List[String]]](cacheKey,Duration.create(ldapCacheDuration,"seconds")) {
      logger.debug("LDAP: get roles for " + uid)
      try {
        val searchEntries : java.util.List[com.unboundid.ldap.sdk.SearchResultEntry] = connectionPool.get
          .search(new SearchRequest(
            userBaseDN,
            SearchScope.SUB,
            Filter.createEqualityFilter(uidAttribute,uid),roleMemberAttribute)
          )
          .getSearchEntries
        val groups : List[String] = searchEntries.get(0)
          .getAttributeValues("memberOf")
          .toList
          .map { _.split(",")(0).split("=")(1) }
        logger.debug(s"Got roles $groups")
        Some(groups)
      } catch {
        case ex:java.lang.IndexOutOfBoundsException=>
          logger.error(s"User $uid has no roles attached?", ex)
          None
        case lde: LDAPException =>
          logger.error("Could not look up ldap groups", lde)
          None
      }
    }
    logger.debug(s"Got user roles $userRoles")
    userRoles
  }