add base filt
This commit is contained in:
parent
3353a61005
commit
942ffab126
|
@ -0,0 +1,6 @@
|
||||||
|
.idea/
|
||||||
|
go.sum
|
||||||
|
account/
|
||||||
|
gen_result/
|
||||||
|
etc/service.yaml
|
||||||
|
client/
|
|
@ -0,0 +1,140 @@
|
||||||
|
run:
|
||||||
|
timeout: 3m
|
||||||
|
# Exit code when at least one issue was found.
|
||||||
|
# Default: 1
|
||||||
|
issues-exit-code: 2
|
||||||
|
# Include test files or not.
|
||||||
|
# Default: true
|
||||||
|
tests: false
|
||||||
|
|
||||||
|
# Reference URL: https://golangci-lint.run/usage/linters/
|
||||||
|
linters:
|
||||||
|
# Disable everything by default so upgrades to not include new - default
|
||||||
|
# enabled- linters.
|
||||||
|
disable-all: true
|
||||||
|
# Specifically enable linters we want to use.
|
||||||
|
enable:
|
||||||
|
# - depguard
|
||||||
|
- errcheck
|
||||||
|
# - godot
|
||||||
|
- gofmt
|
||||||
|
- goimports
|
||||||
|
- gosimple
|
||||||
|
- govet
|
||||||
|
- ineffassign
|
||||||
|
- misspell
|
||||||
|
- revive
|
||||||
|
# - staticcheck
|
||||||
|
- typecheck
|
||||||
|
- unused
|
||||||
|
# - wsl
|
||||||
|
- asasalint
|
||||||
|
- asciicheck
|
||||||
|
- bidichk
|
||||||
|
- bodyclose
|
||||||
|
# - containedctx
|
||||||
|
- contextcheck
|
||||||
|
# - cyclop
|
||||||
|
# - varnamelen
|
||||||
|
# - gci
|
||||||
|
- wastedassign
|
||||||
|
- whitespace
|
||||||
|
# - wrapcheck
|
||||||
|
- thelper
|
||||||
|
- tparallel
|
||||||
|
- unconvert
|
||||||
|
- unparam
|
||||||
|
- usestdlibvars
|
||||||
|
- tenv
|
||||||
|
- testableexamples
|
||||||
|
- stylecheck
|
||||||
|
- sqlclosecheck
|
||||||
|
- nosprintfhostport
|
||||||
|
- paralleltest
|
||||||
|
- prealloc
|
||||||
|
- predeclared
|
||||||
|
- promlinter
|
||||||
|
- reassign
|
||||||
|
- rowserrcheck
|
||||||
|
- nakedret
|
||||||
|
- nestif
|
||||||
|
- nilerr
|
||||||
|
- nilnil
|
||||||
|
- nlreturn
|
||||||
|
- noctx
|
||||||
|
- nolintlint
|
||||||
|
- nonamedreturns
|
||||||
|
- decorder
|
||||||
|
- dogsled
|
||||||
|
# - dupl
|
||||||
|
- dupword
|
||||||
|
- durationcheck
|
||||||
|
- errchkjson
|
||||||
|
- errname
|
||||||
|
- errorlint
|
||||||
|
# - execinquery
|
||||||
|
- exhaustive
|
||||||
|
- exportloopref
|
||||||
|
- forbidigo
|
||||||
|
- forcetypeassert
|
||||||
|
# - gochecknoglobals
|
||||||
|
- gochecknoinits
|
||||||
|
- gocognit
|
||||||
|
- goconst
|
||||||
|
- gocritic
|
||||||
|
- gocyclo
|
||||||
|
# - godox
|
||||||
|
# - goerr113
|
||||||
|
# - gofumpt
|
||||||
|
- goheader
|
||||||
|
- gomoddirectives
|
||||||
|
# - gomodguard always failed
|
||||||
|
- goprintffuncname
|
||||||
|
- gosec
|
||||||
|
- grouper
|
||||||
|
- importas
|
||||||
|
- interfacebloat
|
||||||
|
# - ireturn
|
||||||
|
- lll
|
||||||
|
- loggercheck
|
||||||
|
- maintidx
|
||||||
|
- makezero
|
||||||
|
|
||||||
|
issues:
|
||||||
|
exclude-rules:
|
||||||
|
- path: _test\.go
|
||||||
|
linters:
|
||||||
|
- funlen
|
||||||
|
- goconst
|
||||||
|
- interfacer
|
||||||
|
- dupl
|
||||||
|
- lll
|
||||||
|
- goerr113
|
||||||
|
- errcheck
|
||||||
|
- gocritic
|
||||||
|
- cyclop
|
||||||
|
- wrapcheck
|
||||||
|
- gocognit
|
||||||
|
- contextcheck
|
||||||
|
|
||||||
|
linters-settings:
|
||||||
|
gci:
|
||||||
|
sections:
|
||||||
|
- standard # Standard section: captures all standard packages.
|
||||||
|
- default # Default section: contains all imports that could not be matched to another section type.
|
||||||
|
gocognit:
|
||||||
|
# Minimal code complexity to report.
|
||||||
|
# Default: 30 (but we recommend 10-20)
|
||||||
|
min-complexity: 40
|
||||||
|
nestif:
|
||||||
|
# Minimal complexity of if statements to report.
|
||||||
|
# Default: 5
|
||||||
|
min-complexity: 10
|
||||||
|
lll:
|
||||||
|
# Max line length, lines longer will be reported.
|
||||||
|
# '\t' is counted as 1 character by default, and can be changed with the tab-width option.
|
||||||
|
# Default: 120.
|
||||||
|
line-length: 200
|
||||||
|
# Tab width in spaces.
|
||||||
|
# Default: 1
|
||||||
|
tab-width: 1
|
|
@ -0,0 +1,81 @@
|
||||||
|
# go-zero 生成風格
|
||||||
|
GO_ZERO_STYLE=go_zero
|
||||||
|
|
||||||
|
GO ?= go
|
||||||
|
GOFMT ?= gofmt "-s"
|
||||||
|
GOFILES := $(shell find . -name "*.go")
|
||||||
|
LDFLAGS := -s -w
|
||||||
|
VERSION="v1.0.3"
|
||||||
|
DOCKER_REPO="igs170911/notification"
|
||||||
|
|
||||||
|
.PHONY: test
|
||||||
|
test: # 進行測試
|
||||||
|
go test -v --cover ./...
|
||||||
|
|
||||||
|
.PHONY: fmt
|
||||||
|
fmt: # 格式優化
|
||||||
|
$(GOFMT) -w $(GOFILES)
|
||||||
|
goimports -w ./
|
||||||
|
|
||||||
|
.PHONY: gen-rpc
|
||||||
|
gen-rpc: # 建立 rpc code
|
||||||
|
goctl rpc protoc ./generate/protobuf/service.proto -m --style=$(GO_ZERO_STYLE) --go_out=./gen_result/pb --go-grpc_out=./gen_result/pb --zrpc_out=.
|
||||||
|
go mod tidy
|
||||||
|
@echo "Generate core-api files successfully"
|
||||||
|
|
||||||
|
.PHONY: gen-clean
|
||||||
|
gen-clean: # 建立 rpc code
|
||||||
|
rm -rf ./client
|
||||||
|
rm -rf ./etc
|
||||||
|
rm -rf ./gen_result
|
||||||
|
rm -rf ./internal
|
||||||
|
rm -rf go.mod
|
||||||
|
rm -rf go.sum
|
||||||
|
rm -rf service.go
|
||||||
|
@echo "Generate core-api files successfully"
|
||||||
|
|
||||||
|
.PHONY: run-docker
|
||||||
|
run-docker: # 建立 rpc code
|
||||||
|
docker run --platform=linux/arm64/v8 -p 8080:8080 $(DOCKER_REPO):$(VERSION)
|
||||||
|
|
||||||
|
.PHONY: build-docker
|
||||||
|
build-docker:
|
||||||
|
cp ./build/Dockerfile Dockerfile
|
||||||
|
docker buildx build -t $(DOCKER_REPO):$(VERSION) --build-arg SSH_PRIVATE_KEY="$(cat ~/.ssh/ed_25519)" .
|
||||||
|
rm -rf Dockerfile
|
||||||
|
@echo "Generate core-api files successfully"
|
||||||
|
|
||||||
|
.PHONY: gen-my-sql-model
|
||||||
|
gen-my-sql-model: # 建立 rpc 資料庫
|
||||||
|
goctl model mysql ddl -c no -s ./generate/database/mysql/20230529020011_account_table.up.sql --style $(GO_ZERO_STYLE) -d ./internal/model -i ''
|
||||||
|
goctl model mysql ddl -c no -s ./generate/database/mysql/20230529020012_account_uid_table.up.sql --style $(GO_ZERO_STYLE) -d ./internal/model -i ''
|
||||||
|
goctl model mysql ddl -c no -s ./generate/database/mysql/20230529020013_user_table.up.sql --style $(GO_ZERO_STYLE) -d ./internal/model -i ''
|
||||||
|
goctl model mysql ddl -c no -s ./generate/database/mysql/20230719061241_machine_node.up.sql --style $(GO_ZERO_STYLE) -d ./internal/model -i ''
|
||||||
|
@echo "Generate mysql model files successfully"
|
||||||
|
|
||||||
|
gen-mongo-model: # 建立 rpc 資料庫
|
||||||
|
# 只產生 Model 剩下的要自己撰寫,連欄位名稱也是
|
||||||
|
goctl model mongo -t AutoId --dir ./internal/model/mongo --style $(GO_ZERO_STYLE)
|
||||||
|
@echo "Generate mongo model files successfully"
|
||||||
|
|
||||||
|
#goctl model mysql ddl -s ./generate/database/mysql/20240819090248_create_role_permission_table.up.sql --style go_zero -d ./internal/model -i '' (沒cache)
|
||||||
|
#goctl model mysql ddl -c no -s ./generate/database/mysql/20240816014305_create_permission_table.up.sql --style go_zero -d ./internal/model -i '' (有cache)
|
||||||
|
|
||||||
|
.PHONY: mock-gen
|
||||||
|
mock-gen: # 建立 mock 資料
|
||||||
|
mockgen -source=./internal/domain/usecase/uid_generate.go -destination=./internal/mock/usecase/uid_generate.go -package=mock
|
||||||
|
mockgen -source=./internal/model/account_model_gen.go -destination=./internal/mock/model/account_model_gen.go -package=mock
|
||||||
|
mockgen -source=./internal/model/account_model.go -destination=./internal/mock/model/account_model.go -package=mock
|
||||||
|
mockgen -source=./internal/model/account_to_uid_model_gen.go -destination=./internal/mock/model/account_to_uid_model_gen.go -package=mock
|
||||||
|
mockgen -source=./internal/model/account_to_uid_model.go -destination=./internal/mock/model/account_to_uidmodel.go -package=mock
|
||||||
|
mockgen -source=./internal/model/machine_node_model_gen.go -destination=./internal/mock/model/machine_node_model_gen.go -package=mock
|
||||||
|
mockgen -source=./internal/model/machine_node_model.go -destination=./internal/mock/model/machine_node_model.go -package=mock
|
||||||
|
mockgen -source=./internal/model/user_table_model_gen.go -destination=./internal/mock/model/user_table_model_gen.go -package=mock
|
||||||
|
mockgen -source=./internal/model/user_table_model.go -destination=./internal/mock/model/user_table_model.go -package=mock
|
||||||
|
mockgen -source=./internal/model/mongo/auto_id_model_gen.go -destination=./internal/mock/model/auto_id_model_gen.go -package=mock
|
||||||
|
mockgen -source=./internal/model/mongo/auto_id_model.go -destination=./internal/mock/model/auto_id_model.go -package=mock
|
||||||
|
@echo "Generate mock files successfully"
|
||||||
|
|
||||||
|
.PHONY: migrate-database
|
||||||
|
migrate-database:
|
||||||
|
migrate -source file://generate/database/mysql -database 'mysql://root:yytt@tcp(127.0.0.1:3306)/digimon_member' up
|
|
@ -0,0 +1,47 @@
|
||||||
|
###########
|
||||||
|
# BUILDER #
|
||||||
|
###########
|
||||||
|
|
||||||
|
FROM golang:1.22.3 as builder
|
||||||
|
|
||||||
|
ARG VERSION
|
||||||
|
ARG BUILT
|
||||||
|
ARG GIT_COMMIT
|
||||||
|
ARG SSH_PRV_KEY
|
||||||
|
|
||||||
|
# private go packages
|
||||||
|
ENV GOPRIVATE=code.30cm.net
|
||||||
|
ENV FLAG="-s -w -X main.Version=${VERSION} -X main.Built=${BUILT} -X main.GitCommit=${GIT_COMMIT}"
|
||||||
|
WORKDIR /app
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install git
|
||||||
|
|
||||||
|
# Make the root foler for our ssh
|
||||||
|
RUN mkdir -p /root/.ssh && \
|
||||||
|
chmod 0700 /root/.ssh && \
|
||||||
|
ssh-keyscan git.30cm.net > /root/.ssh/known_hosts && \
|
||||||
|
echo "$SSH_PRV_KEY" > /root/.ssh/id_rsa && \
|
||||||
|
chmod 600 /root/.ssh/id_rsa
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
RUN --mount=type=ssh go mod download
|
||||||
|
|
||||||
|
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
|
||||||
|
-ldflags "$FLAG" \
|
||||||
|
-o service
|
||||||
|
|
||||||
|
##########
|
||||||
|
## FINAL #
|
||||||
|
##########
|
||||||
|
#
|
||||||
|
FROM gcr.io/distroless/static-debian11
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=builder /app/service /app/service
|
||||||
|
COPY --from=builder /app/etc/service.yaml /app/etc/service.yaml
|
||||||
|
EXPOSE 8080
|
||||||
|
CMD ["/app/service"]
|
|
@ -0,0 +1 @@
|
||||||
|
// TODO 未來要放 helm 的地方
|
|
@ -0,0 +1 @@
|
||||||
|
DROP DATABASE IF EXISTS `digimon_permission`;
|
|
@ -0,0 +1,39 @@
|
||||||
|
# migrate
|
||||||
|
數據庫遷移工具
|
||||||
|
|
||||||
|
[golang-migrate](https://github.com/golang-migrate/migrate)
|
||||||
|
|
||||||
|
## 安裝 make
|
||||||
|
```shell
|
||||||
|
brew install Makefile
|
||||||
|
```
|
||||||
|
|
||||||
|
## 安裝 golang-migrate
|
||||||
|
```shell
|
||||||
|
brew install golang-migrate
|
||||||
|
```
|
||||||
|
|
||||||
|
## 執行刪除 mysql schema
|
||||||
|
|
||||||
|
```shell
|
||||||
|
migrate -source file://database/migrations/mysql -database 'mysql://account:password@tcp(127.0.0.1:3306)/esc_c2c' down
|
||||||
|
```
|
||||||
|
|
||||||
|
## 執行安裝 mysql schema
|
||||||
|
|
||||||
|
```shell
|
||||||
|
migrate -source file://database/migrations/mysql -database 'mysql://account:password@tcp(127.0.0.1:3306)/esc_c2c' up
|
||||||
|
```
|
||||||
|
|
||||||
|
## 執行刪除 mongo schema
|
||||||
|
|
||||||
|
```shell
|
||||||
|
migrate -source file://database/migrations/mongodb -database 'mongodb://127.0.0.1:27017/esc_c2c' down
|
||||||
|
```
|
||||||
|
|
||||||
|
## 執行安裝 mongo schema
|
||||||
|
|
||||||
|
```shell
|
||||||
|
migrate -source file://database/migrations/mongodb -database 'mongodb://127.0.0.1:27017/esc_c2c' up
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,210 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package member;
|
||||||
|
option go_package="./member";
|
||||||
|
|
||||||
|
// OKResp
|
||||||
|
message OKResp {}
|
||||||
|
// NoneReq
|
||||||
|
message NoneReq {}
|
||||||
|
|
||||||
|
// ================ enum ================
|
||||||
|
enum VerifyType {
|
||||||
|
VERIFY_NONE = 0; // 初始(異常)
|
||||||
|
VERIFY_EMAIL = 1;
|
||||||
|
VERIFY_PHONE = 2;
|
||||||
|
VERIFY_GOOGLE = 3; // google 驗證器
|
||||||
|
VERIFY_NOT = 4; // 尚未
|
||||||
|
}
|
||||||
|
|
||||||
|
enum AlarmType {
|
||||||
|
ALARM_NONE = 0; // 初始(異常)
|
||||||
|
ALARM_NOT = 1; // 未告警
|
||||||
|
ALARM_SYSTEM = 2; // 系統告警中
|
||||||
|
}
|
||||||
|
|
||||||
|
enum MemberStatus {
|
||||||
|
STATUS_NONE = 0; // 初始(異常)
|
||||||
|
STATUS_VERIFY = 1; // 尚未驗證
|
||||||
|
STATUS_COMPLETE = 2; // 帳號啟用中
|
||||||
|
STATUS_DISABLE = 3; // 帳號停權中
|
||||||
|
STATUS_EMAIL = 4; // 信箱以驗證
|
||||||
|
STATUS_PHONE = 5; // 手機以驗證
|
||||||
|
STATUS_GA = 6; // GA 已綁定
|
||||||
|
}
|
||||||
|
|
||||||
|
// ================ enum ================
|
||||||
|
|
||||||
|
|
||||||
|
// ================ common ================
|
||||||
|
message Pager {
|
||||||
|
int64 total =1;
|
||||||
|
int64 size=2;
|
||||||
|
int64 index=3;
|
||||||
|
}
|
||||||
|
// ================ common ================
|
||||||
|
|
||||||
|
|
||||||
|
// ================ account ================
|
||||||
|
message CreateLoginUserReq {
|
||||||
|
string login_id = 1;
|
||||||
|
int64 platform = 2;
|
||||||
|
string token = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message BindingUserReq {
|
||||||
|
string uid = 1;
|
||||||
|
string login_id = 2;
|
||||||
|
int64 type = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message BindingUserResp {
|
||||||
|
string uid = 1;
|
||||||
|
string login_id = 2;
|
||||||
|
int64 type = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message CreateUserInfoReq {
|
||||||
|
string uid = 1;
|
||||||
|
VerifyType verify_type = 2;
|
||||||
|
AlarmType alarm_type = 3;
|
||||||
|
MemberStatus status = 4;
|
||||||
|
string language = 5;
|
||||||
|
string currency = 6;
|
||||||
|
optional string avatar= 7;
|
||||||
|
optional string nick_name = 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetAccountInfoResp {
|
||||||
|
CreateLoginUserReq data = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateUserInfoReq 不處理邏輯給不給改,這裡只關新增修改刪除
|
||||||
|
message UpdateUserInfoReq {
|
||||||
|
string uid = 1;
|
||||||
|
optional string language = 2;
|
||||||
|
optional string currency = 3;
|
||||||
|
optional string nick_name = 4;
|
||||||
|
optional string avatar = 5;
|
||||||
|
optional VerifyType verify_type = 6;
|
||||||
|
optional AlarmType alarm_type = 7;
|
||||||
|
optional MemberStatus status = 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetUIDByAccountReq {
|
||||||
|
string account = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetUidByAccountResp {
|
||||||
|
string uid = 1;
|
||||||
|
string account =2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message UpdateTokenReq {
|
||||||
|
string account = 1;
|
||||||
|
string token = 2;
|
||||||
|
int64 platform=3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GenerateRefreshCodeReq {
|
||||||
|
string account = 1;
|
||||||
|
int32 code_type =2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message VerifyCode {
|
||||||
|
string verify_code = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GenerateRefreshCodeResp {
|
||||||
|
VerifyCode data = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message VerifyRefreshCodeReq {
|
||||||
|
string account = 1;
|
||||||
|
int32 code_type =2;
|
||||||
|
string verify_code = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message UpdateStatusReq {
|
||||||
|
string uid = 1;
|
||||||
|
MemberStatus status = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetUserInfoReq {
|
||||||
|
string uid = 1;
|
||||||
|
optional string nick_name =2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message UserInfo {
|
||||||
|
string uid = 1;
|
||||||
|
VerifyType verify_type = 2;
|
||||||
|
AlarmType alarm_type = 3;
|
||||||
|
MemberStatus status = 4;
|
||||||
|
string language = 5;
|
||||||
|
string currency = 6;
|
||||||
|
string avatar = 7;
|
||||||
|
int64 create_time=8;
|
||||||
|
int64 update_time=9;
|
||||||
|
optional string nick_name = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetUserInfoResp {
|
||||||
|
UserInfo data = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ListUserInfoReq {
|
||||||
|
optional VerifyType verify_type = 1;
|
||||||
|
optional AlarmType alarm_type = 2;
|
||||||
|
optional MemberStatus status = 3;
|
||||||
|
optional int64 create_start_time = 4;
|
||||||
|
optional int64 create_end_time = 5;
|
||||||
|
int64 page_size =6;
|
||||||
|
int64 page_index=7;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ListUserInfoResp {
|
||||||
|
repeated UserInfo data = 1;
|
||||||
|
Pager page =2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message VerifyAuthResultReq {
|
||||||
|
string token = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message VerifyAuthResultResp {
|
||||||
|
bool status = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message TwitterAccessTokenResp {
|
||||||
|
string token = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
service Account {
|
||||||
|
// CreateUserAccount 建立帳號與密碼 -> 可登入,但可不可以做其他事情看業務流程,也可以只註冊就好
|
||||||
|
rpc CreateUserAccount(CreateLoginUserReq) returns(OKResp);
|
||||||
|
// GetUserAccountInfo 取得帳號密碼資料
|
||||||
|
rpc GetUserAccountInfo(GetUIDByAccountReq) returns(GetAccountInfoResp);
|
||||||
|
// UpdateUserToken 更新密碼
|
||||||
|
rpc UpdateUserToken(UpdateTokenReq) returns(OKResp);
|
||||||
|
// GetUidByAccount 用帳號換取 UID
|
||||||
|
rpc GetUidByAccount(GetUIDByAccountReq) returns(GetUidByAccountResp);
|
||||||
|
// BindAccount 綁定帳號 -> account bind to UID
|
||||||
|
rpc BindAccount(BindingUserReq) returns(BindingUserResp);
|
||||||
|
// BindUserInfo 初次,綁定 User Info
|
||||||
|
rpc BindUserInfo(CreateUserInfoReq) returns(OKResp);
|
||||||
|
// UpdateUserInfo 更新 User Info
|
||||||
|
rpc UpdateUserInfo(UpdateUserInfoReq) returns(OKResp);
|
||||||
|
// UpdateStatus 修改狀態
|
||||||
|
rpc UpdateStatus(UpdateStatusReq) returns(OKResp);
|
||||||
|
// GetUserInfo 取得會員資訊
|
||||||
|
rpc GetUserInfo(GetUserInfoReq) returns(GetUserInfoResp);
|
||||||
|
// ListMember 取得會員列表
|
||||||
|
rpc ListMember(ListUserInfoReq) returns(ListUserInfoResp);
|
||||||
|
// GenerateRefreshCode 這個帳號驗證碼(十分鐘),通用的
|
||||||
|
rpc GenerateRefreshCode(GenerateRefreshCodeReq) returns(GenerateRefreshCodeResp);
|
||||||
|
// VerifyRefreshCode 驗證忘記密碼 token
|
||||||
|
rpc VerifyRefreshCode(VerifyRefreshCodeReq) returns(OKResp);
|
||||||
|
// VerifyGoogleAuthResult 驗證 google 登入是否有效
|
||||||
|
rpc VerifyGoogleAuthResult(VerifyAuthResultReq)returns(VerifyAuthResultResp);
|
||||||
|
}
|
||||||
|
// ================ account ================
|
Loading…
Reference in New Issue