♻️ Use the new dealer BaseUser and remove ExternalID
This commit is contained in:
		| @@ -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)) | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -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") | ||||
|   | ||||
| @@ -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") | ||||
|   | ||||
| @@ -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()) | ||||
| 	} | ||||
|   | ||||
| @@ -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() | ||||
| } | ||||
| @@ -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") | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user