change cookie seesion to redis

pull/6/head
Namekuji 2022-12-05 02:45:51 -05:00
rodzic 683df93df7
commit 76f4d0f5b7
8 zmienionych plików z 131 dodań i 66 usunięć

Wyświetl plik

@ -1,9 +0,0 @@
LOCAL_DOMAIN="audon.nmkj.tk"
SESSION_SECRET="secret"
DB_HOST="localhost:27017"
DB_NAME="audon"
DB_USER="root"
DB_PASS="example"
LIVEKIT_API_KEY="devkey"
LIVEKIT_API_SECRET="secret"
LIVEKIT_HOST="localhost:7880"

Wyświetl plik

@ -13,6 +13,7 @@ type (
Livekit *LivekitConfig
MongoURL *url.URL
Database *DBConfig
Redis *RedisConfig
}
AppConfigBase struct {
@ -22,10 +23,11 @@ type (
}
LivekitConfig struct {
APIKey string `validate:"required,ascii"`
APISecret string `validate:"required,ascii"`
Host string `validate:"required,hostname_port"`
URL *url.URL
APIKey string `validate:"required,ascii"`
APISecret string `validate:"required,ascii"`
Host string `validate:"required,hostname|hostname_port"`
LocalDomain string `validate:"required,hostname|hostname_port"`
URL *url.URL
}
DBConfig struct {
@ -34,10 +36,16 @@ type (
Host string `validare:"required,hostname_port"`
Name string `validate:"required,alphanum"`
}
RedisConfig struct {
Host string `validate:"required,hostname_port"`
User string `validate:"printascii"`
Password string `validate:"printascii"`
}
)
const (
SESSION_NAME = "session"
SESSION_NAME = "session-id"
SESSION_DATASTORE_NAME = "data"
)
@ -47,7 +55,7 @@ func loadConfig(envname string) (*AppConfig, error) {
}
// Set values in .env files to environment variables
if err := godotenv.Load(".env." + envname); err != nil {
if err := godotenv.Load(".env." + envname + ".local"); err != nil {
return nil, err
}
if _, err := os.Stat(".env"); err == nil {
@ -90,19 +98,32 @@ func loadConfig(envname string) (*AppConfig, error) {
}
appConf.MongoURL = mongoURL
// Setup Redis config
redisConf := &RedisConfig{
Host: os.Getenv("REDIS_HOST"),
User: os.Getenv("REDIS_USER"),
Password: os.Getenv("REDIS_PASS"),
}
if err := mainValidator.Struct(redisConf); err != nil {
return nil, err
}
appConf.Redis = redisConf
// Setup LiveKit config
lkConf := &LivekitConfig{
APIKey: os.Getenv("LIVEKIT_API_KEY"),
APISecret: os.Getenv("LIVEKIT_API_SECRET"),
Host: os.Getenv("LIVEKIT_HOST"),
APIKey: os.Getenv("LIVEKIT_API_KEY"),
APISecret: os.Getenv("LIVEKIT_API_SECRET"),
Host: os.Getenv("LIVEKIT_HOST"),
LocalDomain: os.Getenv("LIVEKIT_LOCAL_DOMAIN"),
}
if err := mainValidator.Struct(lkConf); err != nil {
return nil, err
}
lkConf.URL = &url.URL{
Scheme: "ws",
Host: lkConf.Host,
lkURL := &url.URL{
Scheme: "https",
Host: lkConf.LocalDomain,
}
lkConf.URL = lkURL
appConf.Livekit = lkConf
return &appConf, nil

Wyświetl plik

@ -4,8 +4,8 @@ version: '3.1'
services:
mongo:
image: mongo
restart: always
image: mongo:6
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
@ -16,7 +16,7 @@ services:
mongo-express:
image: mongo-express
restart: always
restart: unless-stopped
ports:
- 8081:8081
environment:
@ -24,15 +24,25 @@ services:
ME_CONFIG_MONGODB_ADMINPASSWORD: example
ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/
# redis:
# restart: always
# image: redis
# healthcheck:
# test: ['CMD', 'redis-cli', 'ping']
# ports:
# - 6379:6379
# volumes:
# - audon:/data
redis:
image: redis:7-alpine
restart: unless-stopped
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
ports:
- 6379:6379
volumes:
- redis:/data
redisinsight:
image: redislabs/redisinsight:latest
restart: unless-stopped
ports:
- 8001:8001
volumes:
- redisinsight:/db
volumes:
db:
redis:
redisinsight:

8
go.mod
Wyświetl plik

@ -4,6 +4,7 @@ go 1.19
require (
github.com/go-playground/validator/v10 v10.11.1
github.com/go-redis/redis/v9 v9.0.0-rc.2
github.com/gorilla/sessions v1.2.1
github.com/jaevor/go-nanoid v1.3.0
github.com/joho/godotenv v1.4.0
@ -14,6 +15,7 @@ require (
github.com/mattn/go-mastodon v0.0.6
github.com/oklog/ulid/v2 v2.1.0
github.com/pkg/errors v0.9.1
github.com/rbcervilla/redisstore/v9 v9.0.0-rc1
go.mongodb.org/mongo-driver v1.11.0
)
@ -84,10 +86,10 @@ require (
go.uber.org/multierr v1.6.0 // indirect
go.uber.org/zap v1.23.0 // indirect
golang.org/x/crypto v0.0.0-20221010152910-d6f0a8c073c2 // indirect
golang.org/x/net v0.0.0-20221004154528-8021a29435af // indirect
golang.org/x/net v0.2.0 // indirect
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f // indirect
golang.org/x/sys v0.0.0-20221010170243-090e33056c14 // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/sys v0.2.0 // indirect
golang.org/x/text v0.4.0 // indirect
golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9 // indirect
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987 // indirect
google.golang.org/grpc v1.50.0 // indirect

18
go.sum
Wyświetl plik

@ -102,6 +102,8 @@ github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJ
github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
github.com/go-redis/redis/v9 v9.0.0-rc.2 h1:IN1eI8AvJJeWHjMW/hlFAv2sAfvTun2DVksDDJ3a6a0=
github.com/go-redis/redis/v9 v9.0.0-rc.2/go.mod h1:cgBknjwcBJa2prbnuHH/4k/Mlj4r0pWNV2HBanHujfY=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
@ -149,7 +151,7 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
@ -258,7 +260,7 @@ github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
github.com/onsi/gomega v1.24.1 h1:KORJXNNTzJXzu4ScJWssJfJMnJ+2QJqhoQSRwNlze9E=
github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o=
github.com/pion/datachannel v1.5.2 h1:piB93s8LGmbECrpO84DnkIVWasRMk3IimbcXkTQLE6E=
github.com/pion/datachannel v1.5.2/go.mod h1:FTGQWaHrdCwIJ1rw6xBIfZVkslikjShim5yr05XFuCQ=
@ -333,6 +335,8 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1
github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo=
github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4=
github.com/rbcervilla/redisstore/v9 v9.0.0-rc1 h1:lcslwjETfEK+SlZn6TEtTCYrHH3zVKbOZ/As64C//PI=
github.com/rbcervilla/redisstore/v9 v9.0.0-rc1/go.mod h1:CLeg5R5doVaSTKeEUD1SbzrddtStyNrr3uXmL2CVi/I=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
@ -475,8 +479,9 @@ golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220531201128-c960675eff93/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.0.0-20221004154528-8021a29435af h1:wv66FM3rLZGPdxpYL+ApnDe2HzHcTFta3z5nsc13wI4=
golang.org/x/net v0.0.0-20221004154528-8021a29435af/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@ -549,8 +554,9 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220608164250-635b8c9b7f68/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220622161953-175b2fd9d664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20221010170243-090e33056c14 h1:k5II8e6QD8mITdi+okbbmR/cIyEbeXLBhy5Ha4nevyc=
golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@ -559,8 +565,9 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@ -710,7 +717,6 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

Wyświetl plik

@ -12,14 +12,14 @@ import (
"go.mongodb.org/mongo-driver/mongo"
)
func verifyTokenInSession(c echo.Context) (valid bool, err error) {
func verifyTokenInSession(c echo.Context) (bool, *mastodon.Account, error) {
data, err := getSessionData(c)
if err != nil {
return false, err
return false, nil, err
}
if data.MastodonConfig.AccessToken == "" {
return false, nil
return false, nil, nil
}
mastoClient := mastodon.NewClient(data.MastodonConfig)
@ -27,10 +27,10 @@ func verifyTokenInSession(c echo.Context) (valid bool, err error) {
user, dbErr := findUserByID(c.Request().Context(), data.AudonID)
if err != nil || dbErr != nil || string(acc.ID) != user.RemoteID {
return false, err
return false, nil, err
}
return true, nil
return true, acc, nil
}
// handler for POST to /app/login
@ -41,7 +41,7 @@ func loginHandler(c echo.Context) (err error) {
return wrapValidationError(err)
}
valid, _ := verifyTokenInSession(c)
valid, _, _ := verifyTokenInSession(c)
if !valid {
serverURL := &url.URL{
Host: serverHost,

22
room.go
Wyświetl plik

@ -14,6 +14,11 @@ import (
"go.mongodb.org/mongo-driver/mongo"
)
type TokenMessage struct {
RtcURL string `json:"rtc"`
Token string `json:"token"`
}
// handler for POST to /api/room
func createRoomHandler(c echo.Context) error {
room := new(Room)
@ -94,9 +99,21 @@ func joinRoomHandler(c echo.Context) (err error) {
return echo.NewHTTPError(http.StatusInternalServerError)
}
// Create room in LiveKit
resp := &TokenMessage{
RtcURL: mainConfig.Livekit.URL.String(),
Token: token,
}
return c.JSON(http.StatusOK, token)
// Create room in LiveKit
_, err = lkRoomServiceClient.CreateRoom(c.Request().Context(), &livekit.CreateRoomRequest{
Name: room.RoomID,
})
if err != nil {
c.Logger().Error(err)
return echo.NewHTTPError(http.StatusConflict)
}
return c.JSON(http.StatusOK, resp)
}
// intended to be called by room's host
@ -134,6 +151,7 @@ func getRoomToken(room *Room, identity string, canTalk bool) (string, error) {
grant := &auth.VideoGrant{
Room: room.RoomID,
RoomJoin: true,
RoomCreate: false,
CanPublish: &canTalk,
}
at.AddGrant(grant).SetIdentity(identity).SetValidFor(10 * time.Minute)

Wyświetl plik

@ -12,11 +12,13 @@ import (
"time"
"github.com/go-playground/validator/v10"
"github.com/go-redis/redis/v9"
"github.com/gorilla/sessions"
"github.com/labstack/echo-contrib/session"
"github.com/labstack/echo/v4"
lksdk "github.com/livekit/server-sdk-go"
"github.com/mattn/go-mastodon"
"github.com/rbcervilla/redisstore/v9"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
@ -53,11 +55,14 @@ func main() {
mainConfig, err = loadConfig(os.Getenv("AUDON_ENV"))
if err != nil {
log.Fatalln(err)
os.Exit(1)
}
// Setup Livekit RoomService Client
lkRoomServiceClient = lksdk.NewRoomServiceClient(mainConfig.Livekit.URL.String(), mainConfig.Livekit.APIKey, mainConfig.Livekit.APISecret)
lkURL := &url.URL{
Scheme: "https",
Host: mainConfig.Livekit.Host,
}
lkRoomServiceClient = lksdk.NewRoomServiceClient(lkURL.String(), mainConfig.Livekit.APIKey, mainConfig.Livekit.APISecret)
backContext, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
@ -66,15 +71,21 @@ func main() {
dbClient, err := mongo.Connect(backContext, options.Client().ApplyURI(mainConfig.MongoURL.String()))
if err != nil {
log.Fatalln(err)
os.Exit(2)
}
mainDB = dbClient.Database(mainConfig.Database.Name)
err = createIndexes(backContext)
if err != nil {
log.Fatalln(err)
os.Exit(3)
}
// Setup redis client
redisClient := redis.NewClient(&redis.Options{
Addr: mainConfig.Redis.Host,
Username: mainConfig.Redis.User,
Password: mainConfig.Redis.Password,
DB: 0,
})
// Setup echo server
e := echo.New()
defer e.Close()
@ -86,8 +97,12 @@ func main() {
e.Validator = &CustomValidator{validator: mainValidator}
// Setup session middleware (currently Audon stores all client data in cookie)
cookieStore := sessions.NewCookieStore([]byte(mainConfig.SeesionSecret))
cookieStore.Options = &sessions.Options{
redisStore, err := redisstore.NewRedisStore(backContext, redisClient)
if err != nil {
log.Fatalln(err)
}
redisStore.KeyPrefix("session_")
sessionOptions := sessions.Options{
Path: "/",
Domain: mainConfig.LocalDomain,
MaxAge: 86400 * 30,
@ -96,15 +111,14 @@ func main() {
Secure: true,
}
if mainConfig.Environment == "development" {
cookieStore.Options.Domain = ""
cookieStore.Options.SameSite = http.SameSiteNoneMode
cookieStore.Options.Secure = false
cookieStore.Options.MaxAge = 3600 * 24
cookieStore.Options.HttpOnly = false
sessionOptions.Domain = ""
sessionOptions.SameSite = http.SameSiteNoneMode
sessionOptions.Secure = false
sessionOptions.MaxAge = 3600 * 24
sessionOptions.HttpOnly = false
}
e.Use(session.Middleware(cookieStore))
e.Static("/", "audon-fe/dist/assets")
redisStore.Options(sessionOptions)
e.Use(session.Middleware(redisStore))
e.POST("/app/login", loginHandler)
e.GET("/app/oauth", oauthHandler)
@ -114,9 +128,12 @@ func main() {
api.POST("/room", createRoomHandler)
api.GET("/room/:id", joinRoomHandler)
api.DELETE("/room/:id", closeRoomHandler)
api.PATCH("/room/:room/:user", updatePermissionHandler)
e.POST("/app/webhook", livekitWebhookHandler)
// e.Static("/", "audon-fe/dist/assets")
e.Logger.Debug(e.Start(":1323"))
}
@ -210,10 +227,10 @@ func writeSessionData(c echo.Context, data *SessionData) error {
// handler for GET to /app/verify
func verifyHandler(c echo.Context) (err error) {
valid, _ := verifyTokenInSession(c)
valid, acc, _ := verifyTokenInSession(c)
if !valid {
return c.NoContent(http.StatusUnauthorized)
}
return c.NoContent(http.StatusOK)
return c.JSON(http.StatusOK, acc)
}