photum/backend/cmd/tools/set_bucket_public.go
NANDO9322 cd196a0275 feat(auth): adiciona tipo profissional ao schema e corrige avatar
- 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
2025-12-22 12:37:42 -03:00

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!")
}
}