Skip to content

Commit

Permalink
Merge pull request #694 from fanf/arch_24533/update_to_scala_3_syntax…
Browse files Browse the repository at this point in the history
…_branch_7_3_public_plugins

Fixes #24533: Update to scala 3 syntax - branch 7.3 - public plugins
  • Loading branch information
fanf committed Mar 20, 2024
2 parents e0cab12 + 8573b06 commit 9c8b9a7
Show file tree
Hide file tree
Showing 82 changed files with 568 additions and 527 deletions.
6 changes: 4 additions & 2 deletions .scalafmt.conf
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
version = "3.5.9"
version = "3.7.17"
maxColumn = 130
runner.debug = true
runner.dialect = scala213
runner.dialect = scala213Source3

rewrite.scala3.convertToNewSyntax = true

align.preset = most
align.multiline = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ package bootstrap.rudder.plugin
import bootstrap.liftweb.RudderConfig
import com.normation.plugins.PluginStatus
import com.normation.plugins.RudderPluginModule
import com.normation.plugins.apiauthorizations._
import com.normation.plugins.apiauthorizations.*
import com.normation.rudder.rest.ApiAuthorizationLevelService

// service that provide ACL level only if plugin is enable
Expand All @@ -60,14 +60,16 @@ object ApiAuthorizationsConf extends RudderPluginModule {
// override default service level
RudderConfig.apiAuthorizationLevelService.overrideLevel(new AclLevel(pluginStatusService))

lazy val userApi = new UserApi(
lazy val userApi = new UserApi(
RudderConfig.restExtractorService,
RudderConfig.roApiAccountRepository,
RudderConfig.woApiAccountRepository,
RudderConfig.tokenGenerator,
RudderConfig.stringUuidGenerator
)
lazy val pluginDef = new ApiAuthorizationsPluginDef(ApiAuthorizationsConf.pluginStatusService)
override lazy val pluginDef: ApiAuthorizationsPluginDef = new ApiAuthorizationsPluginDef(
ApiAuthorizationsConf.pluginStatusService
)

RudderConfig.snippetExtensionRegister.register(new ApiAccountsExtension(pluginStatusService))
RudderConfig.snippetExtensionRegister.register(new UserInformationExtension(pluginStatusService))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ import com.normation.rudder.rest.AllApi
import com.normation.rudder.rest.ApiKind
import com.normation.rudder.web.snippet.administration.ApiAccounts
import net.liftweb.common.Loggable
import net.liftweb.util.Helpers._
import net.liftweb.util.Helpers.*
import scala.reflect.ClassTag
import scala.xml.NodeSeq

Expand Down Expand Up @@ -76,10 +76,10 @@ class ApiAccountsExtension(val status: PluginStatus)(implicit val ttag: ClassTag
*/
def render(xml: NodeSeq) = {
// get all apis and for public one, and create the structure
import net.liftweb.json._
import net.liftweb.json.*
import net.liftweb.json.Serialization.write
import net.liftweb.http.js.JsCmds._
import net.liftweb.http.js.JE._
import net.liftweb.http.js.JsCmds.*
import net.liftweb.http.js.JE.*
implicit val formats = Serialization.formats(NoTypeHints)

val categories = ((AllApi.api ++ PluginsInfo.pluginApisDef)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,9 @@

package com.normation.plugins.apiauthorizations

import bootstrap.liftweb.ConfigResource
import bootstrap.rudder.plugin.ApiAuthorizationsConf
import com.normation.plugins._
import com.normation.plugins.*
import com.normation.rudder.rest.EndpointSchema
import com.normation.rudder.rest.lift.LiftApiModuleProvider

Expand All @@ -47,11 +48,11 @@ class ApiAuthorizationsPluginDef(override val status: PluginStatus) extends Defa
// here, we let the "-" so that "build.conf" is looked up at the correct place.
override val basePackage = "com.normation.plugins.apiauthorizations"

override def apis: Option[LiftApiModuleProvider[_ <: EndpointSchema]] = Some(ApiAuthorizationsConf.userApi)
override def apis: Option[LiftApiModuleProvider[? <: EndpointSchema]] = Some(ApiAuthorizationsConf.userApi)

def init = {}
def oneTimeInit: Unit = {}

val configFiles = Seq()
override val configFiles: Seq[ConfigResource] = Seq()

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import com.normation.plugins.PluginExtensionPoint
import com.normation.plugins.PluginStatus
import com.normation.rudder.web.snippet.UserInformation
import net.liftweb.common.Loggable
import net.liftweb.util.Helpers._
import net.liftweb.util.Helpers.*
import scala.reflect.ClassTag
import scala.xml.NodeSeq

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,21 +37,21 @@

package com.normation.plugins.apiauthorizations

import com.normation.box._
import com.normation.box.*
import com.normation.eventlog.ModificationId
import com.normation.rudder.api._
import com.normation.rudder.apidata.ApiAccountSerialisation._
import com.normation.rudder.rest._
import com.normation.rudder.rest.{UserApi => API}
import com.normation.rudder.rest.lift._
import com.normation.rudder.api.*
import com.normation.rudder.apidata.ApiAccountSerialisation.*
import com.normation.rudder.rest.*
import com.normation.rudder.rest.UserApi as API
import com.normation.rudder.rest.lift.*
import com.normation.utils.StringUuidGenerator
import net.liftweb.common.EmptyBox
import net.liftweb.common.Full
import net.liftweb.http.LiftResponse
import net.liftweb.http.Req
import net.liftweb.json._
import net.liftweb.json.*
import net.liftweb.json.JsonAST.JArray
import net.liftweb.json.JsonDSL._
import net.liftweb.json.JsonDSL.*
import org.joda.time.DateTime

class UserApi(
Expand All @@ -63,7 +63,7 @@ class UserApi(
) extends LiftApiModuleProvider[API] {
api =>

def schemas = API
def schemas: ApiModuleProvider[API] = API

def getLiftEndpoints(): List[LiftApiModule] = {
API.endpoints
Expand All @@ -85,7 +85,7 @@ class UserApi(
*/

object GetApiToken extends LiftApiModule0 {
val schema = API.GetApiToken
val schema: UserApi.GetApiToken.type = API.GetApiToken
val restExtractor = api.restExtractor
def process0(version: ApiVersion, path: ApiPath, req: Req, params: DefaultParams, authzToken: AuthzToken): LiftResponse = {
readApi.getById(ApiAccountId(authzToken.actor.name)).toBox match {
Expand All @@ -105,7 +105,7 @@ class UserApi(
}

object CreateApiToken extends LiftApiModule0 {
val schema = API.CreateApiToken
val schema: UserApi.CreateApiToken.type = API.CreateApiToken
val restExtractor = api.restExtractor
def process0(version: ApiVersion, path: ApiPath, req: Req, params: DefaultParams, authzToken: AuthzToken): LiftResponse = {
val now = DateTime.now
Expand Down Expand Up @@ -133,7 +133,7 @@ class UserApi(
}

object DeleteApiToken extends LiftApiModule0 {
val schema = API.DeleteApiToken
val schema: UserApi.DeleteApiToken.type = API.DeleteApiToken
val restExtractor = api.restExtractor
def process0(version: ApiVersion, path: ApiPath, req: Req, params: DefaultParams, authzToken: AuthzToken): LiftResponse = {
writeApi.delete(ApiAccountId(authzToken.actor.name), ModificationId(uuidGen.newUuid), authzToken.actor).toBox match {
Expand All @@ -149,7 +149,7 @@ class UserApi(
}

object UpdateApiToken extends LiftApiModule0 {
val schema = API.UpdateApiToken
val schema: UserApi.UpdateApiToken.type = API.UpdateApiToken
val restExtractor = api.restExtractor
def process0(version: ApiVersion, path: ApiPath, req: Req, params: DefaultParams, authzToken: AuthzToken): LiftResponse = {
readApi.getById(ApiAccountId(authzToken.actor.name)).toBox match {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ import com.normation.rudder.domain.eventlog.RudderEventActor
import com.normation.rudder.domain.logger.ApplicationLoggerPure
import com.normation.rudder.domain.logger.PluginLogger
import com.normation.rudder.rest.RoleApiMapping
import com.normation.rudder.users._
import com.normation.zio._
import com.normation.rudder.users.*
import com.normation.zio.*
import com.typesafe.config.ConfigException
import java.net.URI
import java.util
Expand Down Expand Up @@ -100,8 +100,8 @@ import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserServ
import org.springframework.security.oauth2.client.userinfo.OAuth2UserRequest
import org.springframework.security.oauth2.client.userinfo.OAuth2UserRequestEntityConverter
import org.springframework.security.oauth2.client.userinfo.OAuth2UserService
import org.springframework.security.oauth2.client.web._
import org.springframework.security.oauth2.core._
import org.springframework.security.oauth2.client.web.*
import org.springframework.security.oauth2.core.*
import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest
import org.springframework.security.oauth2.core.oidc.OidcIdToken
import org.springframework.security.oauth2.core.oidc.OidcUserInfo
Expand All @@ -119,8 +119,8 @@ import org.springframework.web.client.RestClientException
import org.springframework.web.client.RestOperations
import org.springframework.web.client.RestTemplate
import org.springframework.web.client.UnknownContentTypeException
import scala.jdk.CollectionConverters._
import zio.syntax._
import scala.jdk.CollectionConverters.*
import zio.syntax.*

/*
* Actual configuration of the plugin logic
Expand Down Expand Up @@ -156,10 +156,10 @@ object AuthBackendsConf extends RudderPluginModule {
val oauthBackendNames = Set("oauth2", "oidc")
RudderConfig.authenticationProviders.addProvider(authBackendsProvider)
RudderConfig.authenticationProviders.addProvider(new AuthBackendsProvider() {
override def authenticationBackends: Set[String] = oauthBackendNames
override def name: String =
override def authenticationBackends: Set[String] = oauthBackendNames
override def name: String =
s"Oauth2 and OpenID Connect authentication backends provider: '${authenticationBackends.mkString("','")}"
override def allowedToUseBackend(name: String): Boolean = pluginStatusService.isEnabled()
override def allowedToUseBackend(name: String): Boolean = pluginStatusService.isEnabled()
})

lazy val isOauthConfiguredByUser = {
Expand All @@ -173,7 +173,7 @@ object AuthBackendsConf extends RudderPluginModule {

lazy val oauth2registrations = RudderPropertyBasedOAuth2RegistrationDefinition.make().runNow

lazy val pluginDef = new AuthBackendsPluginDef(AuthBackendsConf.pluginStatusService)
lazy val pluginDef: AuthBackendsPluginDef = new AuthBackendsPluginDef(AuthBackendsConf.pluginStatusService)

lazy val api = new AuthBackendsApiImpl(
RudderConfig.restExtractorService,
Expand Down Expand Up @@ -324,7 +324,7 @@ class AuthBackendsSpringConfiguration extends ApplicationContextAware {
@Bean def userAuthoritiesMapper = {

new GrantedAuthoritiesMapper {
override def mapAuthorities(authorities: util.Collection[_ <: GrantedAuthority]): util.Collection[_ <: GrantedAuthority] = {
override def mapAuthorities(authorities: util.Collection[? <: GrantedAuthority]): util.Collection[? <: GrantedAuthority] = {
authorities.asScala.flatMap {
case _: OidcUserAuthority | _: OAuth2UserAuthority =>
Some(new SimpleGrantedAuthority("ROLE_USER"))
Expand Down Expand Up @@ -561,7 +561,7 @@ trait RudderUserServerMapping[R <: OAuth2UserRequest, U <: OAuth2User, T <: Rudd
if (reg.roles.enabled) {
val custom = {
try {
import scala.jdk.CollectionConverters._
import scala.jdk.CollectionConverters.*
if (user.getAttributes.containsKey(reg.roles.attributeName)) {
user
.getAttribute[java.util.ArrayList[String]](reg.roles.attributeName)
Expand Down Expand Up @@ -771,15 +771,15 @@ class RudderDefaultOAuth2UserService extends DefaultOAuth2UserService {
private val PARAMETERIZED_RESPONSE_TYPE: ParameterizedTypeReference[java.util.Map[String, AnyRef]] =
new ParameterizedTypeReference[java.util.Map[String, AnyRef]]() {}

private val requestEntityConverter: Converter[OAuth2UserRequest, RequestEntity[_]] = new OAuth2UserRequestEntityConverter
private val requestEntityConverter: Converter[OAuth2UserRequest, RequestEntity[?]] = new OAuth2UserRequestEntityConverter

private val restOperations: RestOperations = {
val restTemplate = new RestTemplate
restTemplate.setErrorHandler(new OAuth2ErrorResponseErrorHandler)
restTemplate
}

import scala.jdk.CollectionConverters._
import scala.jdk.CollectionConverters.*

@throws[OAuth2AuthenticationException]
override def loadUser(userRequest: OAuth2UserRequest): OAuth2User = {
Expand All @@ -801,7 +801,7 @@ class RudderDefaultOAuth2UserService extends DefaultOAuth2UserService {
)
throw new OAuth2AuthenticationException(oauth2Error, oauth2Error.toString)
}
val request: RequestEntity[_] = this.requestEntityConverter.convert(userRequest)
val request: RequestEntity[?] = this.requestEntityConverter.convert(userRequest)
val response: ResponseEntity[java.util.Map[String, AnyRef]] = getResponse(userRequest, request)

AuthBackendsLogger.debug(
Expand All @@ -828,7 +828,7 @@ class RudderDefaultOAuth2UserService extends DefaultOAuth2UserService {

private def getResponse(
userRequest: OAuth2UserRequest,
request: RequestEntity[_]
request: RequestEntity[?]
): ResponseEntity[java.util.Map[String, AnyRef]] = {
try {
return this.restOperations.exchange(request, PARAMETERIZED_RESPONSE_TYPE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,9 @@
package com.normation.plugins.authbackends

import bootstrap.liftweb.Boot
import bootstrap.liftweb.ConfigResource
import bootstrap.rudder.plugin.AuthBackendsConf
import com.normation.plugins._
import com.normation.plugins.*
import com.normation.rudder.AuthorizationType.Administration
import com.normation.rudder.rest.EndpointSchema
import com.normation.rudder.rest.lift.LiftApiModuleProvider
Expand All @@ -60,9 +61,9 @@ class AuthBackendsPluginDef(override val status: PluginStatus) extends DefaultPl

// there is no config file as the main rudder-web.properties must be modified
// for these properties.
val configFiles = Seq()
val configFiles: Seq[ConfigResource] = Seq()

override def apis: Option[LiftApiModuleProvider[_ <: EndpointSchema]] = Some(AuthBackendsConf.api)
override def apis: Option[LiftApiModuleProvider[? <: EndpointSchema]] = Some(AuthBackendsConf.api)

override def pluginMenuEntry: List[(Menu, Option[String])] = {
(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ package com.normation.plugins.authbackends
import com.normation.NamedZioLogger
import net.liftweb.common.Logger
import net.liftweb.json.Extraction
import net.liftweb.json.Formats
import net.liftweb.json.JsonAST.JValue
import net.liftweb.json.NoTypeHints
import org.slf4j.LoggerFactory
Expand Down Expand Up @@ -122,7 +123,7 @@ final case class JsonRadiusConfig(

final object JsonSerialization {

implicit val formats = net.liftweb.json.Serialization.formats(NoTypeHints)
implicit val formats: Formats = net.liftweb.json.Serialization.formats(NoTypeHints)

implicit class ConfigOptionToJson(config: JsonAuthConfiguration) {
def toJson(): JValue = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@ import bootstrap.liftweb.LogoutPostAction
import bootstrap.liftweb.UserLogout
import bootstrap.rudder.plugin.BuildLogout
import cats.data.NonEmptyList
import com.normation.errors._
import com.normation.errors.*
import com.typesafe.config.Config
import org.springframework.security.oauth2.client.registration.ClientRegistration
import org.springframework.security.oauth2.core.AuthorizationGrantType
import org.springframework.security.oauth2.core.ClientAuthenticationMethod
import zio._
import zio.syntax._
import zio.*
import zio.syntax.*

/**
* This file contain logic related to Oauth2/OpenID Connect authentication and
Expand Down Expand Up @@ -124,12 +124,12 @@ object RudderPropertyBasedOAuth2RegistrationDefinition {
val A_PROVISIONING = "enableProvisioning"

val authMethods = {
import ClientAuthenticationMethod._
import ClientAuthenticationMethod.*
List(CLIENT_SECRET_BASIC, CLIENT_SECRET_POST, CLIENT_SECRET_JWT, NONE)
}

val grantTypes = {
import AuthorizationGrantType._
import AuthorizationGrantType.*
List(AUTHORIZATION_CODE, REFRESH_TOKEN, CLIENT_CREDENTIALS, PASSWORD) // IMPLICIT is deprecated for security reason
}

Expand Down Expand Up @@ -215,7 +215,7 @@ object RudderPropertyBasedOAuth2RegistrationDefinition {
case (errs, oks) =>
errs.toList match {
case Nil => oks.toList.succeed
case h :: tail => Accumulated(NonEmptyList.of(h, tail: _*)).fail
case h :: tail => Accumulated(NonEmptyList.of(h, tail*)).fail
}
}
}
Expand All @@ -237,7 +237,7 @@ object RudderPropertyBasedOAuth2RegistrationDefinition {
}
def readMap(key: String): IOResult[Map[String, String]] = {
val path = baseProperty + "." + id + "." + key
import scala.jdk.CollectionConverters._
import scala.jdk.CollectionConverters.*
for {
keySet <- IOResult
.attempt(s"Missing key '${path}' for OAUTH2 registration '${id}' (${registrationAttributes(key)})")(
Expand Down Expand Up @@ -286,7 +286,7 @@ object RudderPropertyBasedOAuth2RegistrationDefinition {
.clientAuthenticationMethod(authMethod)
.authorizationGrantType(grantTypes)
.redirectUri(clientRedirect)
.scope(scopes: _*)
.scope(scopes*)
.authorizationUri(uriAuth)
.tokenUri(uriToken)
.userInfoUri(uriUserInfo)
Expand Down Expand Up @@ -355,7 +355,7 @@ object RudderPropertyBasedOAuth2RegistrationDefinition {
}

class RudderPropertyBasedOAuth2RegistrationDefinition(val registrations: Ref[List[(String, RudderClientRegistration)]]) {
import RudderPropertyBasedOAuth2RegistrationDefinition._
import RudderPropertyBasedOAuth2RegistrationDefinition.*

/*
* read information from config and update internal cache
Expand Down
Loading

0 comments on commit 9c8b9a7

Please sign in to comment.