Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
a71208de38 | |||
be56513c8b | |||
![]() |
d83c3f2160 | ||
![]() |
10cd97b46d | ||
![]() |
8096c7703f |
@ -1,11 +1,11 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"gitea.pena/PenaSide/verification/internal/app"
|
||||||
|
"gitea.pena/PenaSide/verification/internal/config"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"gitea.pena/PenaSide/verification/internal/app"
|
|
||||||
"gitea.pena/PenaSide/verification/internal/config"
|
|
||||||
|
|
||||||
_ "gitea.pena/PenaSide/linters-golang/pkg/dummy"
|
_ "gitea.pena/PenaSide/linters-golang/pkg/dummy"
|
||||||
"time"
|
"time"
|
||||||
|
@ -111,13 +111,13 @@ func Run(cfg *config.Config, build Build) {
|
|||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
if err := userSrv.Start(cfg.ClientHttpURL); err != nil {
|
if err := userSrv.Start(cfg.ClientHttpURL); err != nil {
|
||||||
logger.Fatal("Server startup error", zap.Error(err))
|
logger.Fatal("Client server startup error", zap.Error(err))
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
if err := adminSrv.Start(cfg.AdminHttpURL); err != nil {
|
if err := adminSrv.Start(cfg.AdminHttpURL); err != nil {
|
||||||
logger.Fatal("Server startup error", zap.Error(err))
|
logger.Fatal("Admin server startup error", zap.Error(err))
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@ -4,9 +4,9 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
_ "embed"
|
_ "embed"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/verification/internal/models"
|
||||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gitea.pena/PenaSide/verification/internal/models"
|
|
||||||
"text/template"
|
"text/template"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -35,7 +35,6 @@ func NewTelegram(deps Deps) *Telegram {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *Telegram) SendVerification(data *models.Verification, url string, isUpdate bool) error {
|
func (t *Telegram) SendVerification(data *models.Verification, url string, isUpdate bool) error {
|
||||||
fmt.Println("VERT", data, url,isUpdate)
|
|
||||||
var tplPath string
|
var tplPath string
|
||||||
if isUpdate {
|
if isUpdate {
|
||||||
tplPath = UpdatedVerification
|
tplPath = UpdatedVerification
|
||||||
@ -43,13 +42,10 @@ func (t *Telegram) SendVerification(data *models.Verification, url string, isUpd
|
|||||||
tplPath = NewVerification
|
tplPath = NewVerification
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("VERT1", tplPath)
|
|
||||||
var userURL string
|
var userURL string
|
||||||
userURL = fmt.Sprintf("%s/users/%s", t.stagingURL, data.UserID)
|
userURL = fmt.Sprintf("%s/users/%s", t.stagingURL, data.UserID)
|
||||||
fmt.Println("VERT2", userURL)
|
|
||||||
|
|
||||||
tpl, err := template.New("verification_template").Parse(tplPath)
|
tpl, err := template.New("verification_template").Parse(tplPath)
|
||||||
fmt.Println("VERT333", tpl,err)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error parsing template: %w", err)
|
return fmt.Errorf("error parsing template: %w", err)
|
||||||
}
|
}
|
||||||
@ -69,14 +65,12 @@ func (t *Telegram) SendVerification(data *models.Verification, url string, isUpd
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = tpl.Execute(&text, toTG)
|
err = tpl.Execute(&text, toTG)
|
||||||
fmt.Println("VERT433", err)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error executing template: %w", err)
|
return fmt.Errorf("error executing template: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
msg := tgbotapi.NewMessage(t.chatID, text.String())
|
msg := tgbotapi.NewMessage(t.chatID, text.String())
|
||||||
|
|
||||||
fmt.Println("VERT433", err, t.chatID, text.String())
|
|
||||||
_, err = t.bot.Send(msg)
|
_, err = t.bot.Send(msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error sending message: %w", err)
|
return fmt.Errorf("error sending message: %w", err)
|
||||||
|
@ -3,10 +3,10 @@ package admin
|
|||||||
import "github.com/gofiber/fiber/v2"
|
import "github.com/gofiber/fiber/v2"
|
||||||
|
|
||||||
func (r *VerifyAdminController) Register(router fiber.Router) {
|
func (r *VerifyAdminController) Register(router fiber.Router) {
|
||||||
router.Get("/verification/:userID", r.GetVerification)
|
router.Get("/:userID", r.GetVerification)
|
||||||
router.Patch("/verification", r.SetVerificationStatus)
|
router.Patch("/", r.SetVerificationStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *VerifyAdminController) Name() string {
|
func (r *VerifyAdminController) Name() string {
|
||||||
return ""
|
return "verification"
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,11 @@ package user
|
|||||||
import "github.com/gofiber/fiber/v2"
|
import "github.com/gofiber/fiber/v2"
|
||||||
|
|
||||||
func (r *VerifyUserController) Register(router fiber.Router) {
|
func (r *VerifyUserController) Register(router fiber.Router) {
|
||||||
router.Get("/verification", r.GetVerification)
|
router.Get("/", r.GetVerification)
|
||||||
router.Post("/verification", r.CreateVerification)
|
router.Post("/", r.CreateVerification)
|
||||||
router.Put("/verification", r.SetVerificationFile)
|
router.Put("/", r.SetVerificationFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *VerifyUserController) Name() string {
|
func (r *VerifyUserController) Name() string {
|
||||||
return ""
|
return "verification"
|
||||||
}
|
}
|
||||||
|
@ -4,17 +4,18 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/verification/internal/utils"
|
||||||
"mime/multipart"
|
"mime/multipart"
|
||||||
"time"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"gitea.pena/PenaSide/verification/internal/models"
|
||||||
"github.com/minio/minio-go/v7"
|
"github.com/minio/minio-go/v7"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gitea.pena/PenaSide/verification/internal/models"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type VerificationRepository struct {
|
type VerificationRepository struct {
|
||||||
@ -54,7 +55,7 @@ func (r *VerificationRepository) Insert(
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = r.s3.PutObject(ctx, VerificationBucket, fmt.Sprintf("%s/%s/%s", r.folder, userID, innFH.Filename), inn, innFH.Size, minio.PutObjectOptions{})
|
_, err = r.s3.PutObject(ctx, VerificationBucket, utils.GenerateFilePath(r.folder, userID, innFH.Filename), inn, innFH.Size, minio.PutObjectOptions{})
|
||||||
if r.err(err) {
|
if r.err(err) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -65,7 +66,7 @@ func (r *VerificationRepository) Insert(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Put rule file
|
// Put rule file
|
||||||
_, err = r.s3.PutObject(ctx, VerificationBucket, fmt.Sprintf("%s/%s/%s", r.folder, userID, ruleFH.Filename), rule, ruleFH.Size, minio.PutObjectOptions{})
|
_, err = r.s3.PutObject(ctx, VerificationBucket, utils.GenerateFilePath(r.folder, userID, innFH.Filename), rule, ruleFH.Size, minio.PutObjectOptions{})
|
||||||
if r.err(err) {
|
if r.err(err) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -77,7 +78,7 @@ func (r *VerificationRepository) Insert(
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = r.s3.PutObject(ctx, VerificationBucket, fmt.Sprintf("%s/%s/%s", r.folder, userID, certFH.Filename), cert, certFH.Size, minio.PutObjectOptions{})
|
_, err = r.s3.PutObject(ctx, VerificationBucket, utils.GenerateFilePath(r.folder, userID, innFH.Filename), cert, certFH.Size, minio.PutObjectOptions{})
|
||||||
if r.err(err) {
|
if r.err(err) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -85,7 +86,7 @@ func (r *VerificationRepository) Insert(
|
|||||||
record.Files = []models.VerificationFile{
|
record.Files = []models.VerificationFile{
|
||||||
{
|
{
|
||||||
Name: "certificate",
|
Name: "certificate",
|
||||||
Url: fmt.Sprintf("%s/%s/%s/%s", r.url, r.folder, userID, certFH.Filename),
|
Url: utils.GenerateURL(r.url, r.folder, userID, certFH.Filename),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -94,11 +95,11 @@ func (r *VerificationRepository) Insert(
|
|||||||
record.Files = append(record.Files, []models.VerificationFile{
|
record.Files = append(record.Files, []models.VerificationFile{
|
||||||
{
|
{
|
||||||
Name: "inn",
|
Name: "inn",
|
||||||
Url: fmt.Sprintf("%s/%s/%s/%s", r.url, r.folder, userID, innFH.Filename),
|
Url: utils.GenerateURL(r.url, r.folder, userID, innFH.Filename),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "rule",
|
Name: "rule",
|
||||||
Url: fmt.Sprintf("%s/%s/%s/%s", r.url, r.folder, userID, ruleFH.Filename),
|
Url: utils.GenerateURL(r.url, r.folder, userID, ruleFH.Filename),
|
||||||
},
|
},
|
||||||
}...)
|
}...)
|
||||||
|
|
||||||
@ -114,9 +115,10 @@ func (r *VerificationRepository) Insert(
|
|||||||
func (r *VerificationRepository) GetByUserID(ctx context.Context, userID string) (*models.Verification, error) {
|
func (r *VerificationRepository) GetByUserID(ctx context.Context, userID string) (*models.Verification, error) {
|
||||||
if userID == "" {
|
if userID == "" {
|
||||||
err := errors.New("userID cannot be empty")
|
err := errors.New("userID cannot be empty")
|
||||||
r.logger.Error("VerificationRepositoryError", zap.Error(err))
|
if r.err(err) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
filter := bson.M{
|
filter := bson.M{
|
||||||
"user_id": userID,
|
"user_id": userID,
|
||||||
@ -130,9 +132,10 @@ func (r *VerificationRepository) GetByUserID(ctx context.Context, userID string)
|
|||||||
if err == mongo.ErrNoDocuments {
|
if err == mongo.ErrNoDocuments {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
r.logger.Error("VerificationRepositoryError", zap.Error(err))
|
if r.err(err) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return &result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
@ -140,9 +143,10 @@ func (r *VerificationRepository) GetByUserID(ctx context.Context, userID string)
|
|||||||
func (r *VerificationRepository) Get(ctx context.Context, id string) (*models.Verification, error) {
|
func (r *VerificationRepository) Get(ctx context.Context, id string) (*models.Verification, error) {
|
||||||
if id == "" {
|
if id == "" {
|
||||||
err := errors.New("_id cannot be empty")
|
err := errors.New("_id cannot be empty")
|
||||||
r.logger.Error("VerificationRepositoryError", zap.Error(err))
|
if r.err(err) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
filter := bson.M{
|
filter := bson.M{
|
||||||
"_id": id,
|
"_id": id,
|
||||||
@ -154,9 +158,10 @@ func (r *VerificationRepository) Get(ctx context.Context, id string) (*models.Ve
|
|||||||
if err == mongo.ErrNoDocuments {
|
if err == mongo.ErrNoDocuments {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
r.logger.Error("VerificationRepositoryError", zap.Error(err))
|
if r.err(err) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return &result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
@ -228,7 +233,6 @@ func (r *VerificationRepository) UpdateFile(ctx context.Context, userID, fileNam
|
|||||||
|
|
||||||
// update in mongodb
|
// update in mongodb
|
||||||
|
|
||||||
|
|
||||||
result, err := r.Update(ctx, &models.Verification{ID: verification.ID, Files: verification.Files})
|
result, err := r.Update(ctx, &models.Verification{ID: verification.ID, Files: verification.Files})
|
||||||
if r.err(err) {
|
if r.err(err) {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -4,14 +4,16 @@ import (
|
|||||||
"gitea.pena/PenaSide/verification/internal/models"
|
"gitea.pena/PenaSide/verification/internal/models"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/gofiber/fiber/v2"
|
|
||||||
"gitea.pena/PenaSide/common/jwt_adapter"
|
"gitea.pena/PenaSide/common/jwt_adapter"
|
||||||
|
"github.com/gofiber/fiber/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const localUserIDHeader = "LocalUserID"
|
||||||
|
|
||||||
func LocalJwt() fiber.Handler {
|
func LocalJwt() fiber.Handler {
|
||||||
return func(c *fiber.Ctx) error {
|
return func(c *fiber.Ctx) error {
|
||||||
if c.Get("LocalUserID") != "" {
|
if c.Get(localUserIDHeader) != "" {
|
||||||
c.Locals("userID", c.Get("LocalUserID"))
|
c.Locals("userID", c.Get(localUserIDHeader))
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.Next()
|
return c.Next()
|
||||||
|
11
internal/utils/utils.go
Normal file
11
internal/utils/utils.go
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package utils
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func GenerateFilePath(folder, userID, filename string) string {
|
||||||
|
return fmt.Sprintf("%s/%s/%s", folder, userID, filename)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateURL(baseURL, folder, userID, filename string) string {
|
||||||
|
return fmt.Sprintf("%s/%s/%s/%s", baseURL, folder, userID, filename)
|
||||||
|
}
|
26
test.env
26
test.env
@ -1,20 +1,14 @@
|
|||||||
TELEGRAM_TOKEN=6712573453:AAFbioUuXf0Te73MUCqa0_h09qEQ1iQREas
|
TELEGRAM_TOKEN=6712573453:AAFqTOsgwe_j48ZQ1GzWKQDT5Nwr-SAWjz8
|
||||||
TELEGRAM_CHANNEL_ID=542073142
|
TELEGRAM_CHANNEL_ID=-1002177203276
|
||||||
HTTP_ADDRESS_USER=0.0.0.0:8080
|
CLIENT_HTTP_URL=0.0.0.0:8080
|
||||||
HTTP_ADDRESS_ADMIN=0.0.0.0:8081
|
ADMIN_HTTP_URL=0.0.0.0:8081
|
||||||
MONGO_HOST=localhost
|
MONGO_URL=mongodb://test:test@localhost:27020/
|
||||||
MONGO_PORT=27020
|
MONGO_DB_NAME=admin
|
||||||
MONGO_USER=test
|
S3_ACCESS_KEY=admin
|
||||||
MONGO_PASSWORD=test
|
|
||||||
MONGO_AUTH=admin
|
|
||||||
MONGO_DATABASE_NAME=admin
|
|
||||||
S3_ENDPOINT=localhost:9005
|
|
||||||
S3_ACCESS_KEY_ID=admin
|
|
||||||
S3_SECRET_KEY=admin123
|
S3_SECRET_KEY=admin123
|
||||||
CUSTOMER_SVC_ADDRESS=localhost:9003
|
VERIFICATION_MICROSERVICE_URL=https://sadmin.pena
|
||||||
STAGING_URL=https://sadmin.pena
|
|
||||||
S3_FOLDER=videodata
|
S3_FOLDER=videodata
|
||||||
S3_FILE_URL=http://localhost:9005/videodata
|
S3_FILE_URL=http://localhost:9005/videodata
|
||||||
CUSTOMER_RPC_HOST=localhost:9003
|
CUSTOMER_MICROSERVICE_RPC_URL=localhost:9003
|
||||||
TRASH_LOG_HOST=localhost:7113
|
TRASH_LOG_HOST=localhost:7113
|
||||||
MODULE_LOGGER=verify-local
|
S3_ENDPOINT=localhost:9000
|
Loading…
Reference in New Issue
Block a user