♻️ Use the new dealer BaseUser and remove ExternalID

This commit is contained in:
2024-09-11 23:54:18 +08:00
parent 41ebb572fa
commit f962376f42
14 changed files with 45 additions and 109 deletions

View File

@ -2,6 +2,8 @@ package api
import (
"fmt"
"git.solsynth.dev/hydrogen/dealer/pkg/hyper"
"git.solsynth.dev/hydrogen/messaging/pkg/internal/gap"
"git.solsynth.dev/hydrogen/messaging/pkg/internal/server/exts"
@ -88,7 +90,7 @@ func addChannelMember(c *fiber.Ctx) error {
}
var account models.Account
if err := database.C.Where(&models.Account{
if err := database.C.Where(&hyper.BaseUser{
Name: data.Target,
}).First(&account).Error; err != nil {
return fiber.NewError(fiber.StatusNotFound, err.Error())
@ -133,7 +135,7 @@ func removeChannelMember(c *fiber.Ctx) error {
}
var account models.Account
if err := database.C.Where(&models.Account{
if err := database.C.Where(&hyper.BaseUser{
Name: data.Target,
}).First(&account).Error; err != nil {
return fiber.NewError(fiber.StatusNotFound, err.Error())
@ -215,7 +217,7 @@ func joinChannel(c *fiber.Ctx) error {
if realm, err := services.GetRealmWithExtID(channel.Realm.ExternalID); err != nil {
return fiber.NewError(fiber.StatusInternalServerError, fmt.Sprintf("invalid channel, related realm was not found: %v", err))
} else if _, err := services.GetRealmMember(realm.ExternalID, user.ExternalID); err != nil {
} else if _, err := services.GetRealmMember(realm.ExternalID, user.ID); err != nil {
return fiber.NewError(fiber.StatusBadRequest, fmt.Sprintf("you are not a part of the realm: %v", err))
}

View File

@ -125,7 +125,7 @@ func createChannel(c *fiber.Ctx) error {
var realm *models.Realm
if val, ok := c.Locals("realm").(models.Realm); ok {
if info, err := services.GetRealmMember(val.ExternalID, user.ExternalID); err != nil {
if info, err := services.GetRealmMember(val.ExternalID, user.ID); err != nil {
return fiber.NewError(fiber.StatusForbidden, "you must be a part of that realm then can create channel related to it")
} else if info.GetPowerLevel() < 50 {
return fiber.NewError(fiber.StatusForbidden, "you must be a moderator of that realm then can create channel related to it")
@ -179,7 +179,7 @@ func editChannel(c *fiber.Ctx) error {
tx := database.C.Where(&models.Channel{BaseModel: models.BaseModel{ID: uint(id)}})
if val, ok := c.Locals("realm").(models.Realm); ok {
if info, err := services.GetRealmMember(val.ExternalID, user.ExternalID); err != nil {
if info, err := services.GetRealmMember(val.ExternalID, user.ID); err != nil {
return fiber.NewError(fiber.StatusForbidden, "you must be a part of that realm then can edit channel related to it")
} else if info.GetPowerLevel() < 50 {
return fiber.NewError(fiber.StatusForbidden, "you must be a moderator of that realm then can edit channel related to it")
@ -221,7 +221,7 @@ func deleteChannel(c *fiber.Ctx) error {
tx := database.C.Where(&models.Channel{BaseModel: models.BaseModel{ID: uint(id)}})
if val, ok := c.Locals("realm").(models.Realm); ok {
if info, err := services.GetRealmMember(val.ExternalID, user.ExternalID); err != nil {
if info, err := services.GetRealmMember(val.ExternalID, user.ID); err != nil {
return fmt.Errorf("you must be a part of that realm then can delete channel related to it")
} else if info.GetPowerLevel() < 50 {
return fmt.Errorf("you must be a moderator of that realm then can delete channel related to it")

View File

@ -33,7 +33,7 @@ func createDirectChannel(c *fiber.Ctx) error {
var realm *models.Realm
if val, ok := c.Locals("realm").(models.Realm); ok {
if info, err := services.GetRealmMember(val.ExternalID, user.ExternalID); err != nil {
if info, err := services.GetRealmMember(val.ExternalID, user.ID); err != nil {
return fiber.NewError(fiber.StatusForbidden, "you must be a part of that realm then can create channel related to it")
} else if info.GetPowerLevel() < 50 {
return fiber.NewError(fiber.StatusForbidden, "you must be a moderator of that realm then can create channel related to it")

View File

@ -1,6 +1,7 @@
package api
import (
"git.solsynth.dev/hydrogen/dealer/pkg/hyper"
"git.solsynth.dev/hydrogen/messaging/pkg/internal/database"
"git.solsynth.dev/hydrogen/messaging/pkg/internal/gap"
"git.solsynth.dev/hydrogen/messaging/pkg/internal/models"
@ -15,7 +16,7 @@ func getUserinfo(c *fiber.Ctx) error {
var data models.Account
if err := database.C.
Where(&models.Account{BaseModel: models.BaseModel{ID: user.ID}}).
Where(&hyper.BaseModel{ID: user.ID}).
First(&data).Error; err != nil {
return fiber.NewError(fiber.StatusInternalServerError, err.Error())
}
@ -28,7 +29,7 @@ func getOthersInfo(c *fiber.Ctx) error {
var data models.Account
if err := database.C.
Where(&models.Account{Name: accountId}).
Where(&hyper.BaseUser{Name: accountId}).
First(&data).Error; err != nil {
return fiber.NewError(fiber.StatusInternalServerError, err.Error())
}

View File

@ -1,19 +0,0 @@
package exts
import (
"git.solsynth.dev/hydrogen/dealer/pkg/proto"
"git.solsynth.dev/hydrogen/messaging/pkg/internal/services"
"github.com/gofiber/fiber/v2"
)
func LinkAccountMiddleware(c *fiber.Ctx) error {
if val, ok := c.Locals("p_user").(*proto.UserInfo); ok {
if account, err := services.LinkAccount(val); err != nil {
return fiber.NewError(fiber.StatusInternalServerError, err.Error())
} else {
c.Locals("user", account)
}
}
return c.Next()
}

View File

@ -3,9 +3,11 @@ package server
import (
"strings"
"git.solsynth.dev/hydrogen/dealer/pkg/hyper"
"git.solsynth.dev/hydrogen/messaging/pkg/internal/database"
"git.solsynth.dev/hydrogen/messaging/pkg/internal/gap"
"git.solsynth.dev/hydrogen/messaging/pkg/internal/models"
"git.solsynth.dev/hydrogen/messaging/pkg/internal/server/api"
"git.solsynth.dev/hydrogen/messaging/pkg/internal/server/exts"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cors"
@ -54,7 +56,15 @@ func NewServer() {
}))
app.Use(gap.H.AuthMiddleware)
app.Use(exts.LinkAccountMiddleware)
app.Use(hyper.LinkAccountMiddleware(
database.C,
&models.Account{},
func(u hyper.BaseUser) models.Account {
return models.Account{
BaseUser: u,
}
},
))
api.MapAPIs(app, "/api")
}