firts try api versioning
This commit is contained in:
parent
3216f0d7a2
commit
6c475293cf
@ -1,19 +1,19 @@
|
||||
services:
|
||||
verification:
|
||||
container_name: verification_service
|
||||
verificationv1.0.0:
|
||||
container_name: verification_servicev1.0.0
|
||||
restart: unless-stopped
|
||||
image: $CI_REGISTRY_IMAGE/staging:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
|
||||
hostname: verification_service
|
||||
hostname: verification_servicev1.0.0
|
||||
ports:
|
||||
- 10.8.0.6:7035:7035
|
||||
- 10.8.0.6:7036:7035
|
||||
environment:
|
||||
MONGO_URI: mongodb://$MONGO_USER:$MONGO_PASSWORD@10.8.0.6:27017/?authSource=verification
|
||||
PENADISK_URL: $PENADISK_URL
|
||||
TELEGRAM_TOKEN: $TELEGRAM_TOKEN
|
||||
TELEGRAM_CHANNEL_ID: $TELEGRAM_CHANNEL_ID
|
||||
S3_ENDPOINT: $S3_ENDPOINT
|
||||
S3_ACCESS_KEY_ID: $S3_ACCESS_KEY_ID
|
||||
S3_SECRET_KEY: $S3_SECRET_KEY
|
||||
S3_ENDPOINT: s3.timeweb.cloud
|
||||
S3_ACCESS_KEY_ID: 5CV77KVDUU9H0II9R24M
|
||||
S3_SECRET_KEY: 0W0m8DyvdAKRJnsAy6mB5zndQ7RouJBLhqhtThcu
|
||||
JWT_SECRET: $JWT_SECRET
|
||||
HTTP_ADDRESS: ":7035"
|
||||
MONGO_HOST: "10.8.0.6"
|
||||
@ -22,7 +22,8 @@ services:
|
||||
MONGO_PASSWORD: $MONGO_PASSWORD
|
||||
MONGO_AUTH: "verification"
|
||||
MONGO_DATABASE_NAME: "verification"
|
||||
CUSTOMER_SVC_ADDRESS: "10.8.0.6:8065"
|
||||
CUSTOMER_SVC_ADDRESS: "http://10.8.0.6:8065"
|
||||
STAGING_URL: "https://sadmin.pena"
|
||||
|
||||
S3_FOLDER: verification
|
||||
S3_FILE_URL: https://3c580be9-cf31f296-d055-49cf-b39e-30c7959dc17b.s3.timeweb.cloud
|
||||
tty: true
|
||||
|
@ -53,7 +53,7 @@ func Run(cfg *config.Config) {
|
||||
logger.Fatal("MinioClient", zap.Error(err))
|
||||
}
|
||||
|
||||
reps, err := initialize.NewRepositories(ctx, logger, mongoDB, minioClient)
|
||||
reps, err := initialize.NewRepositories(ctx, logger, mongoDB, minioClient, cfg.S3Folder, cfg.S3FileUrl)
|
||||
if err != nil {
|
||||
logger.Fatal("Repositories", zap.Error(err))
|
||||
}
|
||||
|
@ -17,8 +17,8 @@ func NewCustomer(logger *zap.Logger, address string) *Customer {
|
||||
return &Customer{logger: logger, address: address}
|
||||
}
|
||||
|
||||
func (c *Customer) UpdateAccountVerification(userId, status string) (*models.RespUpdateVerificationStatus, error) {
|
||||
agent := fiber.Patch(fmt.Sprintf("%s/account/%s", c.address, userId))
|
||||
func (c *Customer) UpdateAccountVerification(userId, status, token string) (*models.RespUpdateVerificationStatus, error) {
|
||||
agent := fiber.Patch(fmt.Sprintf("%s/account/%s", c.address, userId)).Add("Authorization",token)
|
||||
agent.JSON(&models.ReqCreateVerification{Status: status})
|
||||
|
||||
err := agent.Parse()
|
||||
|
@ -20,6 +20,8 @@ type Config struct {
|
||||
S3SecretKey string `env:"S3_SECRET_KEY,required"`
|
||||
CustomerSvcAddress string `env:"CUSTOMER_SVC_ADDRESS,required"`
|
||||
StagingURL string `env:"STAGING_URL,required"`
|
||||
S3Folder string `env:"S3_FOLDER,required"`
|
||||
S3FileUrl string `env:"S3_FILE_URL,required"`
|
||||
}
|
||||
|
||||
func NewConfig(file ...string) (*Config, error) {
|
||||
|
@ -137,7 +137,7 @@ func (r *VerificationController) SetVerificationStatus(c *fiber.Ctx) error {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(errValidate)
|
||||
}
|
||||
|
||||
_, err = r.repository.Update(c.Context(), &models.Verification{
|
||||
updated, err := r.repository.Update(c.Context(), &models.Verification{
|
||||
ID: req.ID,
|
||||
Accepted: req.Accepted,
|
||||
Status: req.Status,
|
||||
@ -150,7 +150,8 @@ func (r *VerificationController) SetVerificationStatus(c *fiber.Ctx) error {
|
||||
}
|
||||
|
||||
if req.Accepted {
|
||||
_, err := r.customer.UpdateAccountVerification(req.ID, req.Status)
|
||||
token := c.Locals("token").(string)
|
||||
_, err := r.customer.UpdateAccountVerification(updated.UserID, req.Status,token)
|
||||
if err != nil {
|
||||
return fiber.NewError(fiber.StatusInternalServerError, err.Error())
|
||||
}
|
||||
|
@ -16,13 +16,8 @@ func NewRepositories(
|
||||
ctx context.Context,
|
||||
logger *zap.Logger,
|
||||
mongoDB *mongo.Database,
|
||||
s3 *minio.Client) (*Repositories, error) {
|
||||
reps := &Repositories{Verification: repository.NewVerificationRepository(logger, mongoDB, s3)}
|
||||
|
||||
err := reps.Verification.Init(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
s3 *minio.Client, folder, url string) (*Repositories, error) {
|
||||
reps := &Repositories{Verification: repository.NewVerificationRepository(logger, mongoDB, s3, folder, url)}
|
||||
|
||||
return reps, nil
|
||||
}
|
||||
|
@ -2,11 +2,8 @@ package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/minio/minio-go/v7/pkg/policy"
|
||||
"github.com/minio/minio-go/v7/pkg/set"
|
||||
"mime/multipart"
|
||||
"strings"
|
||||
"time"
|
||||
@ -24,88 +21,24 @@ type VerificationRepository struct {
|
||||
logger *zap.Logger
|
||||
mongo *mongo.Collection
|
||||
s3 *minio.Client
|
||||
folder, url string
|
||||
}
|
||||
|
||||
const (
|
||||
VerificationEndpointURL = "https://hub.pena.digital"
|
||||
VerificationBucket = "verification1"
|
||||
VerificationBucket = "3c580be9-cf31f296-d055-49cf-b39e-30c7959dc17b"
|
||||
VerificationCollection = "verification"
|
||||
)
|
||||
|
||||
func NewVerificationRepository(logger *zap.Logger, mongoDb *mongo.Database, s3 *minio.Client) *VerificationRepository {
|
||||
func NewVerificationRepository(logger *zap.Logger, mongoDb *mongo.Database, s3 *minio.Client, folder, url string) *VerificationRepository {
|
||||
return &VerificationRepository{
|
||||
logger: logger,
|
||||
mongo: mongoDb.Collection(VerificationCollection),
|
||||
s3: s3,
|
||||
folder: folder,
|
||||
url: url,
|
||||
}
|
||||
}
|
||||
|
||||
func (r *VerificationRepository) Init(ctx context.Context) error {
|
||||
ok, err := r.s3.BucketExists(ctx, VerificationBucket)
|
||||
if r.err(err) {
|
||||
return err
|
||||
}
|
||||
|
||||
if !ok {
|
||||
err = r.s3.MakeBucket(ctx, VerificationBucket, minio.MakeBucketOptions{ObjectLocking: false})
|
||||
if r.err(err) {
|
||||
return err
|
||||
}
|
||||
|
||||
policyConsoleStatement := policy.Statement{
|
||||
Actions: set.CreateStringSet("*"),
|
||||
Conditions: policy.ConditionMap{
|
||||
"StringLike": policy.ConditionKeyMap{
|
||||
"aws:referer": set.CreateStringSet(fmt.Sprintf("https://console.cloud.yandex.*/folders/*/storage/buckets/%s*", VerificationBucket)),
|
||||
},
|
||||
},
|
||||
Effect: "Allow",
|
||||
Principal: policy.User{AWS: set.CreateStringSet("*")},
|
||||
Resources: set.CreateStringSet(fmt.Sprintf("arn:aws:s3:::%s/*", VerificationBucket),
|
||||
fmt.Sprintf("arn:aws:s3:::%s", VerificationBucket)),
|
||||
Sid: "console-statement",
|
||||
}
|
||||
|
||||
policyServiceAccount := policy.Statement{
|
||||
Actions: set.CreateStringSet("*"),
|
||||
Conditions: nil,
|
||||
Effect: "Allow",
|
||||
Principal: policy.User{CanonicalUser: set.CreateStringSet("ajelmc4tjbct675tjdh9")},
|
||||
Resources: set.CreateStringSet(fmt.Sprintf("arn:aws:s3:::%s/*", VerificationBucket),
|
||||
fmt.Sprintf("arn:aws:s3:::%s", VerificationBucket)),
|
||||
Sid: "service-account-statement",
|
||||
}
|
||||
|
||||
policySharingBucket := policy.Statement{
|
||||
Actions: set.CreateStringSet("s3:GetObject"),
|
||||
Conditions: nil,
|
||||
Effect: "Allow",
|
||||
Principal: policy.User{AWS: set.CreateStringSet("*")},
|
||||
Resources: set.CreateStringSet(fmt.Sprintf("arn:aws:s3:::%s/*", VerificationBucket),
|
||||
fmt.Sprintf("arn:aws:s3:::%s", VerificationBucket)),
|
||||
Sid: "sharing-bucket",
|
||||
}
|
||||
|
||||
p := policy.BucketAccessPolicy{Version: "2012-10-17", Statements: []policy.Statement{
|
||||
policyConsoleStatement,
|
||||
policyServiceAccount,
|
||||
policySharingBucket,
|
||||
}}
|
||||
|
||||
outPolicy, err := json.Marshal(&p)
|
||||
if r.err(err) {
|
||||
return err
|
||||
}
|
||||
|
||||
err = r.s3.SetBucketPolicy(ctx, VerificationBucket, string(outPolicy))
|
||||
if r.err(err) {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *VerificationRepository) Insert(
|
||||
ctx context.Context,
|
||||
userID string,
|
||||
@ -121,7 +54,7 @@ func (r *VerificationRepository) Insert(
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, err = r.s3.PutObject(ctx, VerificationBucket, fmt.Sprintf("%s/%s", userID, innFH.Filename), inn, innFH.Size, minio.PutObjectOptions{})
|
||||
_, err = r.s3.PutObject(ctx, VerificationBucket, fmt.Sprintf("%s/%s/%s", r.folder, userID, innFH.Filename), inn, innFH.Size, minio.PutObjectOptions{})
|
||||
if r.err(err) {
|
||||
return nil, err
|
||||
}
|
||||
@ -132,7 +65,7 @@ func (r *VerificationRepository) Insert(
|
||||
}
|
||||
|
||||
// Put rule file
|
||||
_, err = r.s3.PutObject(ctx, VerificationBucket, fmt.Sprintf("%s/%s", userID, ruleFH.Filename), rule, ruleFH.Size, minio.PutObjectOptions{})
|
||||
_, err = r.s3.PutObject(ctx, VerificationBucket, fmt.Sprintf("%s/%s/%s", r.folder, userID, ruleFH.Filename), rule, ruleFH.Size, minio.PutObjectOptions{})
|
||||
if r.err(err) {
|
||||
return nil, err
|
||||
}
|
||||
@ -143,7 +76,7 @@ func (r *VerificationRepository) Insert(
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, err = r.s3.PutObject(ctx, VerificationBucket, fmt.Sprintf("%s/%s", userID, egruleFH.Filename), egrule, egruleFH.Size, minio.PutObjectOptions{})
|
||||
_, err = r.s3.PutObject(ctx, VerificationBucket, fmt.Sprintf("%s/%s/%s", r.folder, userID, egruleFH.Filename), egrule, egruleFH.Size, minio.PutObjectOptions{})
|
||||
if r.err(err) {
|
||||
return nil, err
|
||||
}
|
||||
@ -155,7 +88,7 @@ func (r *VerificationRepository) Insert(
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, err = r.s3.PutObject(ctx, VerificationBucket, fmt.Sprintf("%s/%s", userID, certFH.Filename), cert, certFH.Size, minio.PutObjectOptions{})
|
||||
_, err = r.s3.PutObject(ctx, VerificationBucket, fmt.Sprintf("%s/%s/%s", r.folder, userID, certFH.Filename), cert, certFH.Size, minio.PutObjectOptions{})
|
||||
if r.err(err) {
|
||||
return nil, err
|
||||
}
|
||||
@ -172,15 +105,15 @@ func (r *VerificationRepository) Insert(
|
||||
record.Files = append(record.Files, []models.VerificationFile{
|
||||
{
|
||||
Name: "inn",
|
||||
Url: fmt.Sprintf("%s/%s/%s/%s", VerificationEndpointURL, VerificationBucket, userID, innFH.Filename),
|
||||
Url: fmt.Sprintf("%s/%s/%s/%s", r.url,r.folder, userID, innFH.Filename),
|
||||
},
|
||||
{
|
||||
Name: "rule",
|
||||
Url: fmt.Sprintf("%s/%s/%s/%s", VerificationEndpointURL, VerificationBucket, userID, ruleFH.Filename),
|
||||
Url: fmt.Sprintf("%s/%s/%s/%s", r.url,r.folder, userID, ruleFH.Filename),
|
||||
},
|
||||
{
|
||||
Name: "egrule",
|
||||
Url: fmt.Sprintf("%s/%s/%s/%s", VerificationEndpointURL, VerificationBucket, userID, egruleFH.Filename),
|
||||
Url: fmt.Sprintf("%s/%s/%s/%s", r.url,r.folder, userID, egruleFH.Filename),
|
||||
},
|
||||
}...)
|
||||
|
||||
@ -272,12 +205,12 @@ func (r *VerificationRepository) UpdateFile(ctx context.Context, userID, fileNam
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, err = r.s3.PutObject(ctx, VerificationBucket, fmt.Sprintf("%s/%s", userID, fileHeader.Filename), fileReader, fileHeader.Size, minio.PutObjectOptions{})
|
||||
_, err = r.s3.PutObject(ctx, VerificationBucket, fmt.Sprintf("%s/%s/%s", r.folder, userID, fileHeader.Filename), fileReader, fileHeader.Size, minio.PutObjectOptions{})
|
||||
if r.err(err) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
fileURL := fmt.Sprintf("%s/%s/%s/%s", VerificationEndpointURL, VerificationBucket, userID, fileHeader.Filename)
|
||||
fileURL := fmt.Sprintf("%s/%s/%s/%s", VerificationEndpointURL,r.folder, userID, fileHeader.Filename)
|
||||
|
||||
// remove old file
|
||||
verification, err := r.GetByUserID(ctx, userID)
|
||||
@ -289,7 +222,6 @@ func (r *VerificationRepository) UpdateFile(ctx context.Context, userID, fileNam
|
||||
return nil, fmt.Errorf("no verification found")
|
||||
}
|
||||
|
||||
fmt.Println("BUG",verification.Files)
|
||||
found := false
|
||||
for iterator, file := range verification.Files {
|
||||
if file.Name != fileName {
|
||||
|
@ -39,6 +39,7 @@ func Jwt() fiber.Handler {
|
||||
}
|
||||
|
||||
c.Locals("userID", jwt.GetUserID())
|
||||
c.Locals("token", c.Get(jwt_adapter.DefaultHeaderKey))
|
||||
return c.Next()
|
||||
}
|
||||
}
|
||||
|
BIN
main
Executable file
BIN
main
Executable file
Binary file not shown.
Loading…
Reference in New Issue
Block a user