generated from PenaSide/GolangTemplate
69 lines
1.8 KiB
Go
69 lines
1.8 KiB
Go
package initialize
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/golang-jwt/jwt/v5"
|
|
"golang.org/x/oauth2"
|
|
"golang.org/x/oauth2/google"
|
|
"golang.org/x/oauth2/vk"
|
|
"penahub.gitlab.yandexcloud.net/pena-services/pena-social-auth/internal/models"
|
|
"penahub.gitlab.yandexcloud.net/pena-services/pena-social-auth/internal/utils"
|
|
"penahub.gitlab.yandexcloud.net/pena-services/pena-social-auth/pkg/env"
|
|
)
|
|
|
|
func Configuration(path string) (*models.Config, error) {
|
|
config, err := env.Parse[models.Config](path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if err := utils.ValidateConfigurationURLs(&config.Service); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
initOAuth2Configuration(&config.Service)
|
|
iniJWTConfiguration(&config.Service.JWT)
|
|
|
|
return config, nil
|
|
}
|
|
|
|
func initOAuth2Configuration(config *models.ServiceConfiguration) {
|
|
config.Google.OAuthConfig = oauth2.Config{
|
|
RedirectURL: config.Google.URL.Redirect,
|
|
ClientID: config.Google.ClientID,
|
|
ClientSecret: config.Google.ClientSecret,
|
|
Scopes: []string{
|
|
"openid",
|
|
"https://www.googleapis.com/auth/userinfo.email",
|
|
"https://www.googleapis.com/auth/userinfo.profile",
|
|
},
|
|
Endpoint: google.Endpoint,
|
|
}
|
|
|
|
config.VK.OAuthConfig = oauth2.Config{
|
|
RedirectURL: config.VK.URL.Redirect,
|
|
ClientID: config.VK.ClientID,
|
|
ClientSecret: config.VK.ClientSecret,
|
|
Scopes: []string{"email"},
|
|
Endpoint: vk.Endpoint,
|
|
}
|
|
|
|
config.Amocrm.OAuthConfig = oauth2.Config{
|
|
RedirectURL: config.Amocrm.URL.Redirect,
|
|
ClientID: config.Amocrm.ClientID,
|
|
ClientSecret: config.Amocrm.ClientSecret,
|
|
Scopes: nil,
|
|
Endpoint: oauth2.Endpoint{
|
|
AuthURL: config.Amocrm.URL.OAuthHost,
|
|
TokenURL: config.Amocrm.URL.AccessToken,
|
|
AuthStyle: models.BodyAuthStyle,
|
|
},
|
|
}
|
|
}
|
|
|
|
func iniJWTConfiguration(config *models.JWTConfiguration) {
|
|
config.Algorithm = *jwt.SigningMethodRS256
|
|
config.ExpiresIn = 15 * time.Minute
|
|
}
|