@ -19,17 +19,20 @@ type ServiceAccountsAPI struct {
service serviceaccounts . Service
service serviceaccounts . Service
accesscontrol accesscontrol . AccessControl
accesscontrol accesscontrol . AccessControl
RouterRegister routing . RouteRegister
RouterRegister routing . RouteRegister
store serviceaccounts . Store
}
}
func NewServiceAccountsAPI (
func NewServiceAccountsAPI (
service serviceaccounts . Service ,
service serviceaccounts . Service ,
accesscontrol accesscontrol . AccessControl ,
accesscontrol accesscontrol . AccessControl ,
routerRegister routing . RouteRegister ,
routerRegister routing . RouteRegister ,
store serviceaccounts . Store ,
) * ServiceAccountsAPI {
) * ServiceAccountsAPI {
return & ServiceAccountsAPI {
return & ServiceAccountsAPI {
service : service ,
service : service ,
accesscontrol : accesscontrol ,
accesscontrol : accesscontrol ,
RouterRegister : routerRegister ,
RouterRegister : routerRegister ,
store : store ,
}
}
}
}
@ -42,6 +45,7 @@ func (api *ServiceAccountsAPI) RegisterAPIEndpoints(
auth := acmiddleware . Middleware ( api . accesscontrol )
auth := acmiddleware . Middleware ( api . accesscontrol )
api . RouterRegister . Group ( "/api/serviceaccounts" , func ( serviceAccountsRoute routing . RouteRegister ) {
api . RouterRegister . Group ( "/api/serviceaccounts" , func ( serviceAccountsRoute routing . RouteRegister ) {
serviceAccountsRoute . Delete ( "/:serviceAccountId" , auth ( middleware . ReqOrgAdmin , accesscontrol . EvalPermission ( serviceaccounts . ActionDelete , serviceaccounts . ScopeID ) ) , routing . Wrap ( api . DeleteServiceAccount ) )
serviceAccountsRoute . Delete ( "/:serviceAccountId" , auth ( middleware . ReqOrgAdmin , accesscontrol . EvalPermission ( serviceaccounts . ActionDelete , serviceaccounts . ScopeID ) ) , routing . Wrap ( api . DeleteServiceAccount ) )
serviceAccountsRoute . Get ( "/upgrade" , auth ( middleware . ReqOrgAdmin , accesscontrol . EvalPermission ( serviceaccounts . ActionCreate , serviceaccounts . ScopeID ) ) , routing . Wrap ( api . UpgradeServiceAccounts ) )
serviceAccountsRoute . Post ( "/" , auth ( middleware . ReqOrgAdmin , accesscontrol . EvalPermission ( serviceaccounts . ActionCreate , serviceaccounts . ScopeID ) ) , routing . Wrap ( api . CreateServiceAccount ) )
serviceAccountsRoute . Post ( "/" , auth ( middleware . ReqOrgAdmin , accesscontrol . EvalPermission ( serviceaccounts . ActionCreate , serviceaccounts . ScopeID ) ) , routing . Wrap ( api . CreateServiceAccount ) )
} )
} )
}
}
@ -71,3 +75,11 @@ func (api *ServiceAccountsAPI) DeleteServiceAccount(ctx *models.ReqContext) resp
}
}
return response . Success ( "service account deleted" )
return response . Success ( "service account deleted" )
}
}
func ( api * ServiceAccountsAPI ) UpgradeServiceAccounts ( ctx * models . ReqContext ) response . Response {
if err := api . store . UpgradeServiceAccounts ( ctx . Req . Context ( ) ) ; err == nil {
return response . Success ( "service accounts upgraded" )
} else {
return response . Error ( 500 , "Internal server error" , err )
}
}