security/security.go
2024-09-30 19:02:10 -04:00

46 lines
1.2 KiB
Go

package security
import (
"somehole.com/common/security/authentication"
"somehole.com/common/security/authorization"
"somehole.com/common/security/identity"
"somehole.com/common/security/signature"
)
type Config struct {
Signer signature.Keypair
}
type SecurityService struct {
config Config
*authentication.SessionService
*authorization.AuditService
*authorization.AuthorizationService
*identity.IdentityService
*signature.SignatureService
}
func NewSecurityService(config ...Config) (srv *SecurityService) {
cfg := Config{}
if len(config) == 1 {
cfg = config[0]
}
signatureService, err := signature.NewSignatureService(&cfg.Signer)
if err != nil {
return
}
identityService := identity.NewIdentityService()
sessionService := authentication.NewSessionService()
auditService := authorization.NewAuditService()
authorizationService := authorization.NewAuthorizationService(auditService)
srv = &SecurityService{
config: cfg,
SessionService: sessionService,
AuditService: auditService,
AuthorizationService: authorizationService,
IdentityService: identityService,
SignatureService: signatureService,
}
return
}