mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-04 02:11:40 +00:00
feature/refactor ui (#1205)
* fix: correct HTTP error handling in gateway * refactor: migrate database and ORM to internal modules * feat: introduce taskfile build system for improved workflow management * refactor: update taskfiles to use relative paths * feat: add profile status field * refactor: move rendering logic to context package * fix: improve error handling in credentials retrieval * refactor: optimize HTTP request handling in Wasm environment * refactor: refactor config loading in motr command * chore: add process-compose for service management * chore: remove default task and update gum format command * fix: update project dependencies * refactor: improve code readability and maintainability * refactor: consolidate error handling components * refactor: update index handler to use new context package * refactor: consolidate database scripts and move to deploy directory * feat: Update flake.nix with development tools and environment configuration * fix: ignore flake.lock file * refactor: migrate build process to use taskfiles for improved modularity and maintainability * refactor: improve GatewayContext and reorganize handlers * refactor: Remove unused profile creation functions * (chore): templ generation * test: add test file for vaults.go * maintenance: remove defunct Discord server link * docs: update checks workflow documentation * test: remove obsolete vaults test file * refactor: move version bumping logic to release workflow
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
package context
|
||||
|
||||
import (
|
||||
gocontext "context"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/onsonr/sonr/pkg/common"
|
||||
"github.com/segmentio/ksuid"
|
||||
"lukechampine.com/blake3"
|
||||
)
|
||||
|
||||
func NewSession(c echo.Context) error {
|
||||
cc, ok := c.(*GatewayContext)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
baseSessionCreateParams := BaseSessionCreateParams(cc)
|
||||
cc.id = baseSessionCreateParams.ID
|
||||
if _, err := cc.CreateSession(bgCtx(), baseSessionCreateParams); err != nil {
|
||||
return err
|
||||
}
|
||||
// Set Cookie
|
||||
if err := common.WriteCookie(c, common.SessionID, cc.id); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Uses blake3 to hash the sessionID to generate a nonce of length 12 bytes
|
||||
func GetNonce(sessionID string) ([]byte, error) {
|
||||
hash := blake3.New(32, nil)
|
||||
_, err := hash.Write([]byte(sessionID))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// Read the hash into a byte slice
|
||||
nonce := make([]byte, 12)
|
||||
_, err = hash.Write(nonce)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return nonce, nil
|
||||
}
|
||||
|
||||
// ForbiddenDevice returns true if the device is unavailable
|
||||
func ForbiddenDevice(c echo.Context) bool {
|
||||
cc, ok := c.(*GatewayContext)
|
||||
if !ok {
|
||||
return true
|
||||
}
|
||||
return cc.agent.IsBot() || cc.agent.IsTV()
|
||||
}
|
||||
|
||||
func GetOrigin(c echo.Context) string {
|
||||
return c.Request().Host
|
||||
}
|
||||
|
||||
func GetSessionID(c echo.Context) string {
|
||||
// Check from context
|
||||
cc, ok := c.(*GatewayContext)
|
||||
if !ok {
|
||||
return ""
|
||||
}
|
||||
// check from cookie
|
||||
if cc.id == "" {
|
||||
if ok := common.CookieExists(c, common.SessionID); !ok {
|
||||
return ""
|
||||
}
|
||||
cc.id = common.ReadCookieUnsafe(c, common.SessionID)
|
||||
}
|
||||
return cc.id
|
||||
}
|
||||
|
||||
func GetAuthChallenge(c echo.Context) string {
|
||||
cc, ok := c.(*GatewayContext)
|
||||
if !ok {
|
||||
return ""
|
||||
}
|
||||
s, err := cc.GetChallengeBySessionID(bgCtx(), cc.id)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
func GetProfileHandle(c echo.Context) string {
|
||||
// First check for the cookie
|
||||
handle := common.ReadCookieUnsafe(c, common.UserHandle)
|
||||
if handle != "" {
|
||||
return handle
|
||||
}
|
||||
|
||||
// Then check the session
|
||||
cc, ok := c.(*GatewayContext)
|
||||
if !ok {
|
||||
return ""
|
||||
}
|
||||
s, err := cc.GetSessionByID(bgCtx(), cc.id)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
profile, err := cc.GetProfileByID(bgCtx(), s.ProfileID)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return profile.Handle
|
||||
}
|
||||
|
||||
//
|
||||
// func GetHumanVerificationNumbers(c echo.Context) (int64, int64) {
|
||||
// cc, ok := c.(*GatewayContext)
|
||||
// if !ok {
|
||||
// return 0, 0
|
||||
// }
|
||||
// s, err := cc.dbq.GetHumanVerificationNumbers(bgCtx(), cc.id)
|
||||
// if err != nil {
|
||||
// return 0, 0
|
||||
// }
|
||||
// return s.IsHumanFirst, s.IsHumanLast
|
||||
// }
|
||||
|
||||
// utility function to get a context
|
||||
func bgCtx() gocontext.Context {
|
||||
ctx := gocontext.Background()
|
||||
return ctx
|
||||
}
|
||||
|
||||
func getOrCreateSessionID(c echo.Context) string {
|
||||
if ok := common.CookieExists(c, common.SessionID); !ok {
|
||||
sessionID := ksuid.New().String()
|
||||
common.WriteCookie(c, common.SessionID, sessionID)
|
||||
return sessionID
|
||||
}
|
||||
|
||||
sessionID, err := common.ReadCookie(c, common.SessionID)
|
||||
if err != nil {
|
||||
sessionID = ksuid.New().String()
|
||||
common.WriteCookie(c, common.SessionID, sessionID)
|
||||
}
|
||||
return sessionID
|
||||
}
|
||||
|
||||
func boolToInt64(b bool) int64 {
|
||||
if b {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
}
|
||||
Reference in New Issue
Block a user