Skip to content

Commit

Permalink
Fixes #24396: Migrate to scala 3 source compat - branch 8.1 - plugins
Browse files Browse the repository at this point in the history
  • Loading branch information
fanf committed Mar 18, 2024
1 parent af3b81d commit f5efcd8
Show file tree
Hide file tree
Showing 110 changed files with 693 additions and 650 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 @@ -39,7 +39,7 @@ package com.normation.plugins.apiauthorizations

import com.normation.plugins.LicensedPluginCheck
import com.normation.rudder.services.nodes.NodeInfoService
import com.normation.zio._
import com.normation.zio.*

final class CheckRudderPluginEnableImpl(nodeInfoService: NodeInfoService) extends LicensedPluginCheck {
// here are processed variables
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,13 +60,13 @@ object ApiAuthorizationsConf extends RudderPluginModule {
// override default service level
RudderConfig.apiAuthorizationLevelService.overrideLevel(new AclLevel(pluginStatusService))

lazy val userApi = new UserApi(
lazy val userApi = new UserApiImpl(
RudderConfig.roApiAccountRepository,
RudderConfig.woApiAccountRepository,
RudderConfig.tokenGenerator,
RudderConfig.stringUuidGenerator
)
lazy val pluginDef = new ApiAuthorizationsPluginDef(ApiAuthorizationsConf.pluginStatusService)
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,10 +44,10 @@ 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
import zio.json._
import zio.json.*

class ApiAccountsExtension(val status: PluginStatus)(implicit val ttag: ClassTag[ApiAccounts])
extends PluginExtensionPoint[ApiAccounts] with Loggable {
Expand Down Expand Up @@ -77,8 +77,8 @@ 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.http.js.JsCmds._
import net.liftweb.http.js.JE._
import net.liftweb.http.js.JsCmds.*
import net.liftweb.http.js.JE.*

val categories = ((AllApi.api ++ PluginsInfo.pluginApisDef)
.filter(x => x.kind == ApiKind.Public || x.kind == ApiKind.General)
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()
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 @@ -7,7 +7,7 @@ import com.normation.rudder.api.ApiAuthorizationKind
import com.normation.rudder.apidata.JsonApiAcl
import com.normation.utils.DateFormaterService
import org.joda.time.DateTime
import zio.json._
import zio.json.*

trait UserJsonCodec {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,41 +38,41 @@
package com.normation.plugins.apiauthorizations

import com.normation.eventlog.ModificationId
import com.normation.rudder.api._
import com.normation.rudder.api.*
import com.normation.rudder.apidata.JsonApiAcl
import com.normation.rudder.facts.nodes.NodeSecurityContext
import com.normation.rudder.rest._
import com.normation.rudder.rest.{UserApi => API}
import com.normation.rudder.rest.*
import com.normation.rudder.rest.UserApi
import com.normation.rudder.rest.implicits.ToLiftResponseOne
import com.normation.rudder.rest.lift._
import com.normation.rudder.rest.lift.*
import com.normation.utils.DateFormaterService
import com.normation.utils.StringUuidGenerator
import io.scalaland.chimney.Transformer
import net.liftweb.http.LiftResponse
import net.liftweb.http.Req
import org.joda.time.DateTime
import zio.json._
import zio.json.*

class UserApi(
class UserApiImpl(
readApi: RoApiAccountRepository,
writeApi: WoApiAccountRepository,
tokenGenerator: TokenGenerator,
uuidGen: StringUuidGenerator
) extends LiftApiModuleProvider[API] {
) extends LiftApiModuleProvider[UserApi] {
api =>

import UserApi._
import UserApiImpl.*

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

def getLiftEndpoints(): List[LiftApiModule] = {
API.endpoints
UserApi.endpoints
.map(e => {
e match {
case API.GetApiToken => GetApiToken
case API.CreateApiToken => CreateApiToken
case API.DeleteApiToken => DeleteApiToken
case API.UpdateApiToken => UpdateApiToken
case UserApi.GetApiToken => GetApiToken
case UserApi.CreateApiToken => CreateApiToken
case UserApi.DeleteApiToken => DeleteApiToken
case UserApi.UpdateApiToken => UpdateApiToken
}
})
.toList
Expand All @@ -85,8 +85,8 @@ class UserApi(
*/

object GetApiToken extends LiftApiModule0 {
val schema = API.GetApiToken
def process0(version: ApiVersion, path: ApiPath, req: Req, params: DefaultParams, authzToken: AuthzToken): LiftResponse = {
val schema: UserApi.GetApiToken.type = UserApi.GetApiToken
def process0(version: ApiVersion, path: ApiPath, req: Req, params: DefaultParams, authzToken: AuthzToken): LiftResponse = {
readApi
.getById(ApiAccountId(authzToken.qc.actor.name))
.map(RestAccountsResponse.fromRedacted(_))
Expand All @@ -96,8 +96,8 @@ class UserApi(
}

object CreateApiToken extends LiftApiModule0 {
val schema = API.CreateApiToken
def process0(version: ApiVersion, path: ApiPath, req: Req, params: DefaultParams, authzToken: AuthzToken): LiftResponse = {
val schema: UserApi.CreateApiToken.type = UserApi.CreateApiToken
def process0(version: ApiVersion, path: ApiPath, req: Req, params: DefaultParams, authzToken: AuthzToken): LiftResponse = {
val now = DateTime.now
val secret = ApiToken.generate_secret(tokenGenerator)
val hash = ApiToken.hash(secret)
Expand All @@ -123,8 +123,8 @@ class UserApi(
}

object DeleteApiToken extends LiftApiModule0 {
val schema = API.DeleteApiToken
def process0(version: ApiVersion, path: ApiPath, req: Req, params: DefaultParams, authzToken: AuthzToken): LiftResponse = {
val schema: UserApi.DeleteApiToken.type = UserApi.DeleteApiToken
def process0(version: ApiVersion, path: ApiPath, req: Req, params: DefaultParams, authzToken: AuthzToken): LiftResponse = {
writeApi
.delete(ApiAccountId(authzToken.qc.actor.name), ModificationId(uuidGen.newUuid), authzToken.qc.actor)
.map(RestAccountIdResponse(_))
Expand All @@ -134,8 +134,8 @@ class UserApi(
}

object UpdateApiToken extends LiftApiModule0 {
val schema = API.UpdateApiToken
def process0(version: ApiVersion, path: ApiPath, req: Req, params: DefaultParams, authzToken: AuthzToken): LiftResponse = {
val schema: UserApi.UpdateApiToken.type = UserApi.UpdateApiToken
def process0(version: ApiVersion, path: ApiPath, req: Req, params: DefaultParams, authzToken: AuthzToken): LiftResponse = {
readApi
.getById(ApiAccountId(authzToken.qc.actor.name))
.map(RestAccountsResponse.fromRedacted(_))
Expand All @@ -146,7 +146,7 @@ class UserApi(

}

object UserApi {
object UserApiImpl {

/**
* The value that will be displayed in the API response for the token.
Expand Down Expand Up @@ -180,8 +180,8 @@ object UserApi {

object RestApiAccount extends UserJsonCodec {
implicit class ApiAccountOps(val account: ApiAccount) extends AnyVal {
import ApiAccountKind._
import io.scalaland.chimney.syntax._
import ApiAccountKind.*
import io.scalaland.chimney.syntax.*
def expirationDate: Option[String] = {
account.kind match {
case PublicApi(_, expirationDate) => expirationDate.map(DateFormaterService.getDisplayDateTimePicker)
Expand All @@ -199,7 +199,7 @@ object UserApi {
}

def acl: Option[List[JsonApiAcl]] = {
import ApiAuthorization._
import ApiAuthorization.*
account.kind match {
case PublicApi(authz, expirationDate) =>
authz match {
Expand Down Expand Up @@ -247,7 +247,7 @@ object UserApi {
)

object RestAccountsResponse {
import RestApiAccount._
import RestApiAccount.*

implicit val encoder: JsonEncoder[RestAccountsResponse] = DeriveJsonEncoder.gen[RestAccountsResponse]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import com.normation.rudder.api.ApiToken
import com.normation.rudder.api.RoApiAccountRepository
import com.normation.rudder.api.TokenGenerator
import com.normation.rudder.api.WoApiAccountRepository
import zio.syntax._
import zio.syntax.*

class MockServices(newToken: String, accounts: Map[ApiAccountId, ApiAccount] = Map.empty) { self =>

Expand All @@ -26,9 +26,9 @@ class MockServices(newToken: String, accounts: Map[ApiAccountId, ApiAccount] = M
id.succeed
}

override def getAllStandardAccounts: IOResult[Seq[ApiAccount]] = ???
override def getAllStandardAccounts: IOResult[Seq[ApiAccount]] = ???
override def getByToken(token: ApiToken): IOResult[Option[ApiAccount]] = ???
override def getSystemAccount: ApiAccount = ???
override def getSystemAccount: ApiAccount = ???
}

object tokenGenerator extends TokenGenerator {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.normation.plugins.apiauthorizations

import better.files._
import better.files.*
import com.normation.rudder.AuthorizationType
import com.normation.rudder.api.ApiAccount
import com.normation.rudder.api.ApiAccountId
Expand Down Expand Up @@ -57,17 +57,17 @@ class UserApiTest extends Specification with TraitTestApiFromYamlFiles with Logg

val userService: UserService = new UserService {
// use an user that has access to the api, we do not test authorization checks in this file
val user1 = new AuthenticatedUser {
val account = RudderAccount.Api(accounts(ApiAccountId("user1")))
val user1 = new AuthenticatedUser {
val account: RudderAccount.Api = RudderAccount.Api(accounts(ApiAccountId("user1")))
def checkRights(auth: AuthorizationType) = true
def getApiAuthz = ApiAuthorization.RW
def nodePerms = NodeSecurityContext.All
def getApiAuthz: ApiAuthorization = ApiAuthorization.RW
def nodePerms: NodeSecurityContext = NodeSecurityContext.All
}
val getCurrentUser = user1
val getCurrentUser: AuthenticatedUser = user1
}

val modules = List(
new UserApi(
new UserApiImpl(
mockServices.apiAccountRepository,
mockServices.apiAccountRepository,
mockServices.tokenGenerator,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ package com.normation.plugins.authbackends

import com.normation.plugins.LicensedPluginCheck
import com.normation.rudder.services.nodes.NodeInfoService
import com.normation.zio._
import com.normation.zio.*

/*
* This template file will processed at build time to choose
Expand Down
Loading

0 comments on commit f5efcd8

Please sign in to comment.