- Adiciona coluna `tipo_profissional` à tabela `usuarios` - Atualiza handlers e services do Backend Go para persistir o tipo - Atualiza registro no Frontend para enviar o nome da função (ex: "Cinegrafista") - Corrige uploads S3 para compatibilidade com Civo (PathStyle) - Script para definir política pública de leitura no bucket S3 - Adiciona fallback para imagens de avatar na Navbar
66 lines
1.7 KiB
Go
66 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
|
|
"photum-backend/internal/config"
|
|
|
|
"github.com/aws/aws-sdk-go-v2/aws"
|
|
awsConfig "github.com/aws/aws-sdk-go-v2/config"
|
|
"github.com/aws/aws-sdk-go-v2/credentials"
|
|
"github.com/aws/aws-sdk-go-v2/service/s3"
|
|
)
|
|
|
|
func main() {
|
|
// Load config manually or assume env vars are set
|
|
cfg := config.LoadConfig()
|
|
|
|
// Custom Resolver for Civo Object Store
|
|
customResolver := aws.EndpointResolverWithOptionsFunc(func(service, region string, options ...interface{}) (aws.Endpoint, error) {
|
|
return aws.Endpoint{
|
|
URL: cfg.S3Endpoint,
|
|
SigningRegion: region,
|
|
}, nil
|
|
})
|
|
|
|
awsCfg, err := awsConfig.LoadDefaultConfig(context.TODO(),
|
|
awsConfig.WithRegion(cfg.S3Region),
|
|
awsConfig.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(cfg.S3AccessKey, cfg.S3SecretKey, "")),
|
|
awsConfig.WithEndpointResolverWithOptions(customResolver),
|
|
)
|
|
if err != nil {
|
|
log.Fatalf("unable to load SDK config, %v", err)
|
|
}
|
|
|
|
client := s3.NewFromConfig(awsCfg, func(o *s3.Options) {
|
|
o.UsePathStyle = true
|
|
})
|
|
|
|
policy := fmt.Sprintf(`{
|
|
"Version": "2012-10-17",
|
|
"Statement": [
|
|
{
|
|
"Sid": "PublicRead",
|
|
"Effect": "Allow",
|
|
"Principal": "*",
|
|
"Action": ["s3:GetObject"],
|
|
"Resource": ["arn:aws:s3:::%s/*"]
|
|
}
|
|
]
|
|
}`, cfg.S3Bucket)
|
|
|
|
log.Printf("Setting policy for bucket: %s...", cfg.S3Bucket)
|
|
_, err = client.PutBucketPolicy(context.TODO(), &s3.PutBucketPolicyInput{
|
|
Bucket: aws.String(cfg.S3Bucket),
|
|
Policy: aws.String(policy),
|
|
})
|
|
|
|
if err != nil {
|
|
log.Printf("Error setting policy: %v", err)
|
|
log.Println("Ensure your credentials have permission to set bucket policies, or configure it manually in the Civo console.")
|
|
} else {
|
|
log.Println("Successfully set bucket policy to Public Read!")
|
|
}
|
|
}
|