mirror of
https://github.com/h44z/wg-portal.git
synced 2025-09-15 07:11:15 +00:00
V2 alpha - initial version (#172)
Initial alpha codebase for version 2 of WireGuard Portal. This version is considered unstable and incomplete (for example, no public REST API)! Use with care! Fixes/Implements the following issues: - OAuth support #154, #1 - New Web UI with internationalisation support #98, #107, #89, #62 - Postgres Support #49 - Improved Email handling #47, #119 - DNS Search Domain support #46 - Bugfixes #94, #48 --------- Co-authored-by: Fabian Wechselberger <wechselbergerf@hotmail.com>
This commit is contained in:
74
internal/domain/context.go
Normal file
74
internal/domain/context.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package domain
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
const CtxUserInfo = "userInfo"
|
||||
|
||||
const (
|
||||
CtxSystemAdminId = "_WG_SYS_ADMIN_"
|
||||
CtxUnknownUserId = "_WG_SYS_UNKNOWN_"
|
||||
)
|
||||
|
||||
type ContextUserInfo struct {
|
||||
Id UserIdentifier
|
||||
IsAdmin bool
|
||||
}
|
||||
|
||||
func (u *ContextUserInfo) String() string {
|
||||
return fmt.Sprintf("%s|%t", u.Id, u.IsAdmin)
|
||||
}
|
||||
|
||||
func (u *ContextUserInfo) UserId() string {
|
||||
return string(u.Id)
|
||||
}
|
||||
|
||||
func DefaultContextUserInfo() *ContextUserInfo {
|
||||
return &ContextUserInfo{
|
||||
Id: CtxUnknownUserId,
|
||||
IsAdmin: false,
|
||||
}
|
||||
}
|
||||
|
||||
func SystemAdminContextUserInfo() *ContextUserInfo {
|
||||
return &ContextUserInfo{
|
||||
Id: CtxSystemAdminId,
|
||||
IsAdmin: true,
|
||||
}
|
||||
}
|
||||
|
||||
func SetUserInfoFromGin(c *gin.Context) context.Context {
|
||||
ginUserInfo, exists := c.Get(CtxUserInfo)
|
||||
|
||||
info := DefaultContextUserInfo()
|
||||
if exists {
|
||||
if ginInfo, ok := ginUserInfo.(*ContextUserInfo); ok {
|
||||
info = ginInfo
|
||||
}
|
||||
}
|
||||
|
||||
ctx := SetUserInfo(c.Request.Context(), info)
|
||||
return ctx
|
||||
}
|
||||
|
||||
func SetUserInfo(ctx context.Context, info *ContextUserInfo) context.Context {
|
||||
ctx = context.WithValue(ctx, CtxUserInfo, info)
|
||||
return ctx
|
||||
}
|
||||
|
||||
func GetUserInfo(ctx context.Context) *ContextUserInfo {
|
||||
rawInfo := ctx.Value(CtxUserInfo)
|
||||
if rawInfo == nil {
|
||||
return DefaultContextUserInfo()
|
||||
}
|
||||
|
||||
if info, ok := rawInfo.(*ContextUserInfo); ok {
|
||||
return info
|
||||
}
|
||||
|
||||
return DefaultContextUserInfo()
|
||||
}
|
Reference in New Issue
Block a user