Skip to content

Commit 5e927ca

Browse files
committed
refactor(api): terraform api
1 parent 2f3e9b6 commit 5e927ca

File tree

6 files changed

+52
-37
lines changed

6 files changed

+52
-37
lines changed

api/login.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,12 @@ type LoginTotpAuthMethod struct {
243243
AllowRecovery bool `json:"allow_recovery"`
244244
}
245245

246+
type LoginEmailAuthMethod struct {
247+
}
248+
246249
type LoginAuthMethods struct {
247-
Totp *LoginTotpAuthMethod `json:"totp,omitempty"`
250+
Totp *LoginTotpAuthMethod `json:"totp,omitempty"`
251+
Email *LoginEmailAuthMethod `json:"email,omitempty"`
248252
}
249253

250254
type loginMetadata struct {

api/router.go

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"embed"
66
"fmt"
7+
proApi "github.com/semaphoreui/semaphore/pro/api"
78
proFeatures "github.com/semaphoreui/semaphore/pro/pkg/features"
89
"github.com/semaphoreui/semaphore/services/server"
910
task2 "github.com/semaphoreui/semaphore/services/tasks"
@@ -15,6 +16,7 @@ import (
1516

1617
"github.com/semaphoreui/semaphore/api/debug"
1718
"github.com/semaphoreui/semaphore/pkg/tz"
19+
proSubscriptions "github.com/semaphoreui/semaphore/pro/api/subscriptions"
1820
log "github.com/sirupsen/logrus"
1921

2022
"github.com/semaphoreui/semaphore/api/runners"
@@ -97,6 +99,7 @@ func Route(
9799
repositoryController := projects.NewRepositoryController(accessKeyInstallationService)
98100
keyController := projects.NewKeyController(accessKeyService)
99101
projectsController := projects.NewProjectsController(accessKeyService)
102+
terraformController := proApi.NewTerraformController(encryptionService)
100103

101104
r := mux.NewRouter()
102105
r.NotFoundHandler = http.HandlerFunc(servePublic)
@@ -153,11 +156,11 @@ func Route(
153156
integrationController.ReceiveIntegration).Methods("POST", "GET", "OPTIONS")
154157

155158
terraformWebhookRouter := publicWebHookRouter.PathPrefix("/terraform").Subrouter()
156-
terraformWebhookRouter.Use(TerraformInventoryAliasMiddleware)
157-
terraformWebhookRouter.Path("/{alias}").HandlerFunc(getTerraformState).Methods("GET")
158-
terraformWebhookRouter.Path("/{alias}").HandlerFunc(addTerraformState).Methods("POST")
159-
terraformWebhookRouter.Path("/{alias}").HandlerFunc(lockTerraformState).Methods("LOCK")
160-
terraformWebhookRouter.Path("/{alias}").HandlerFunc(unlockTerraformState).Methods("UNLOCK")
159+
terraformWebhookRouter.Use(terraformController.TerraformInventoryAliasMiddleware)
160+
terraformWebhookRouter.Path("/{alias}").HandlerFunc(terraformController.GetTerraformState).Methods("GET")
161+
terraformWebhookRouter.Path("/{alias}").HandlerFunc(terraformController.AddTerraformState).Methods("POST")
162+
terraformWebhookRouter.Path("/{alias}").HandlerFunc(terraformController.LockTerraformState).Methods("LOCK")
163+
terraformWebhookRouter.Path("/{alias}").HandlerFunc(terraformController.UnlockTerraformState).Methods("UNLOCK")
161164

162165
authenticatedWS := r.PathPrefix(webPath + "api").Subrouter()
163166
authenticatedWS.Use(JSONMiddleware, authenticationWithStore)
@@ -168,6 +171,9 @@ func Route(
168171

169172
authenticatedAPI.Path("/info").HandlerFunc(getSystemInfo).Methods("GET", "HEAD")
170173

174+
authenticatedAPI.Path("/subscription").HandlerFunc(proSubscriptions.Activate).Methods("POST")
175+
authenticatedAPI.Path("/subscription").HandlerFunc(proSubscriptions.GetSubscription).Methods("GET")
176+
171177
authenticatedAPI.Path("/projects").HandlerFunc(projects.GetProjects).Methods("GET", "HEAD")
172178
authenticatedAPI.Path("/projects").HandlerFunc(projectsController.AddProject).Methods("POST")
173179
authenticatedAPI.Path("/projects/restore").HandlerFunc(projects.Restore).Methods("POST")
@@ -599,6 +605,10 @@ func getSystemInfo(w http.ResponseWriter, r *http.Request) {
599605
}
600606
}
601607

608+
if util.Config.Auth.Email.Enabled {
609+
authMethods.Email = &LoginEmailAuthMethod{}
610+
}
611+
602612
body := map[string]any{
603613
"version": util.Version(),
604614
"ansible": util.AnsibleVersion(),

api/terraform.go

Lines changed: 0 additions & 27 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package subscriptions
2+
3+
import (
4+
"errors"
5+
"github.com/semaphoreui/semaphore/api/helpers"
6+
"net/http"
7+
)
8+
9+
func GetSubscription(w http.ResponseWriter, r *http.Request) {
10+
helpers.WriteError(w, errors.New("not implemented"))
11+
12+
}
13+
14+
func Activate(w http.ResponseWriter, r *http.Request) {
15+
helpers.WriteError(w, errors.New("not implemented"))
16+
}

util/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ type FileLogFormat string
156156

157157
const (
158158
FileLogJSON FileLogFormat = "json"
159-
FileLogRaw FileLogFormat = "raw"
159+
FileLogRaw FileLogFormat = ""
160160
)
161161

162162
type TaskLogType struct {

util/config_auth.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,19 @@
1-
//go:build !pro
2-
31
package util
42

3+
type RecaptchaConfig struct {
4+
Enabled string `json:"enabled,omitempty" env:"SEMAPHORE_RECAPTCHA_ENABLED"`
5+
SiteKey string `json:"site_key,omitempty" env:"SEMAPHORE_RECAPTCHA_SITE_KEY"`
6+
}
7+
8+
type EmailAuthConfig struct {
9+
Enabled bool `json:"enabled" env:"SEMAPHORE_EMAIL_2TP_ENABLED"`
10+
AllowLoginAsExternalUser bool `json:"allow_login_as_external_user" env:"SEMAPHORE_EMAIL_2TP_ALLOW_LOGIN_AS_EXTERNAL_USER"`
11+
AllowCreateExternalUsers bool `json:"allow_create_external_user" env:"SEMAPHORE_EMAIL_2TP_ALLOW_CREATE_EXTERNAL_USER"`
12+
AllowedDomains []string `json:"allowed_domains" env:"SEMAPHORE_EMAIL_2TP_ALLOWED_DOMAINS"`
13+
DisableForOidc bool `json:"disable_for_oidc" env:"SEMAPHORE_EMAIL_2TP_DISABLE_FOR_OIDC"`
14+
}
15+
516
type AuthConfig struct {
6-
Totp *TotpConfig `json:"totp,omitempty"`
17+
Totp *TotpConfig `json:"totp,omitempty"`
18+
Email *EmailAuthConfig `json:"email,omitempty"`
719
}

0 commit comments

Comments
 (0)