1 Star 0 Fork 0

小鱼儿小董子/dongli-kit

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
.github/workflows
3rd
agones
auth/pkg
authfx
firebase_middleware.go
firebase_settings.go
supabase_middleware.go
supabase_settings.go
module
cloud/pkg
iap/pkg
README.md
assets
fxmain
logging
mq
orm
server
utility
.gitignore
.goreleaser.yaml
LICENSE
README.md
README_CN.md
go.mod
go.sum
克隆/下载
supabase_middleware.go 1.71 KB
一键复制 编辑 原始数据 按行查看 历史
小鱼儿小董子 提交于 28天前 . 1111
package authfx
import (
"context"
"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/auth"
"github.com/supabase-community/supabase-go"
"go.uber.org/fx"
"go.uber.org/zap"
"google.golang.org/grpc"
"gitee.com/wanjimao/dongli-kit/server/pkg/sfx"
"gitee.com/wanjimao/dongli-kit/utility"
)
// supabase auth middleware
// https://supabase.com/docs/guides/auth
// SupabaseAuthor is auth for grpc middleware
type SupabaseAuthor struct {
client *supabase.Client
unAuthMethods map[string]struct{}
}
// Auth will auth every grpc request with supabase
func (d *SupabaseAuthor) Auth(ctx context.Context) (context.Context, error) {
method, _ := grpc.Method(ctx)
if _, ok := d.unAuthMethods[method]; ok {
return context.WithValue(ctx, utility.WithOutTag, true), nil
} else if token, err := auth.AuthFromMD(ctx, string(utility.TokenContextKey)); err != nil {
return ctx, err
} else if resp, err := d.client.Auth.WithToken(token).GetUser(); err != nil {
return ctx, err
} else {
ctx = context.WithValue(ctx, utility.UIDContextKey, resp.ID.String())
return ctx, nil
}
}
// AddUnAuthMethod add unauth method
func (d *SupabaseAuthor) AddUnAuthMethod(method string) {
if d.unAuthMethods == nil {
d.unAuthMethods = make(map[string]struct{})
}
d.unAuthMethods[method] = struct{}{}
}
// SupabaseCheckModule is the supabase Auth module for grpc middleware
var SupabaseCheckModule = fx.Provide(
func(
l *zap.Logger,
sSetting SupabaseSettingParams,
) (out sfx.AuthMiddlewareResult, err error) {
c, err := supabase.NewClient(sSetting.URL, sSetting.Key, nil)
if err != nil {
return
}
out.AuthMiddleware = &SupabaseAuthor{
client: c,
unAuthMethods: map[string]struct{}{},
}
return
},
)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wanjimao/dongli-kit.git
git@gitee.com:wanjimao/dongli-kit.git
wanjimao
dongli-kit
dongli-kit
v0.0.34

搜索帮助