Skip to content

Commit

Permalink
Start work with GRPC server
Browse files Browse the repository at this point in the history
  • Loading branch information
CheesyTech committed Feb 2, 2023
1 parent 39ec10d commit d4a49e2
Show file tree
Hide file tree
Showing 9 changed files with 658 additions and 43 deletions.
2 changes: 0 additions & 2 deletions build/app/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ RUN apk update && apk add --no-cache git ca-certificates tzdata && update-ca-cer
WORKDIR $GOPATH/src/app/
COPY . .
COPY ./env.local /go/auth-id/env.local
# COPY ./build/app/a.test /go/auth-id/a.test

# Fetch dependencies.
RUN go get -d -v ./
Expand All @@ -36,7 +35,6 @@ COPY --from=builder /etc/group /etc/group
# Copy our static executable
COPY --from=builder /go/auth-id/ /go/auth-id/
COPY --from=builder /go/auth-id/env.local /go/auth-id/.env
# COPY --from=builder /go/auth-id/a.test /go/auth-id/a.test

# Run the binary.
ENTRYPOINT ["/go/auth-id/main"]
57 changes: 27 additions & 30 deletions cmd/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,20 @@ package app

import (
"context"
"net"

log "github.com/sirupsen/logrus"
"gorm.io/gorm"

cfg "github.com/cheeeasy2501/auth-id/config"
srvs "github.com/cheeeasy2501/auth-id/internal/service"

// mwr "github.com/cheeeasy2501/auth-id/internal/transport/http/middleware"
ctlr "github.com/cheeeasy2501/auth-id/internal/transport/http/v1/controller"
mwr "github.com/cheeeasy2501/auth-id/internal/transport/http/v1/middleware"

"github.com/cheeeasy2501/auth-id/pkg/pb"
"github.com/cheeeasy2501/auth-id/pkg/server"
"google.golang.org/grpc"
)

func Run(ctx context.Context, log *log.Logger, config *cfg.Config, conn *gorm.DB) {
Expand All @@ -21,39 +24,33 @@ func Run(ctx context.Context, log *log.Logger, config *cfg.Config, conn *gorm.DB
router := httpServer.GetRouter()
services := srvs.NewService(config, conn)
controllers := ctlr.NewController(services)
// middlewares := mwr.NewMiddleware(services.Authorization)
v1 := router.Group("/v1")
{
// controllers.RegisterRoutes(routes)

// функционал
// востановление доступа к учетной записи (пароль)
// изменение данных ползователя
// методы:
// получение access jwt
// получение refresh jwt
// обновление access jwt
// обновление refresh jwt
// реализация авторизации по токену
// 1. отправляем access token
// 2. если access token невалидный - возвращаем на фронт ошибку
// 3. берем refresh токен, отсылаем на ендпоинт refresh и получаем новый access
// 4. отсылаем повторно access
// реализация по доступу к email-sender
// 1. посылаем напрямую в email-sender
// 2. email-sender отсылает запрос в auth-id для и проверяет токен
// 3. ????
// 4. Profit
// v1.POST("/jwt", middlewares.Authorize)

}
middleware := mwr.NewMiddleware(services.Authorization)

auth := v1.Group("/auth")
auth := router.Group("/v1/auth")
{
auth.POST("/login", controllers.Authorization.LoginByEmail) //выдать access и refresh(?)
auth.POST("/login", controllers.Authorization.LoginByEmail)
auth.POST("/registration", controllers.Authorization.Registration) // отправляю письмо на email?
auth.POST("/refresh-tokens", controllers.Authorization.RefreshTokens)
auth.POST("/refresh-tokens", middleware.Jwtm.Authorize(), controllers.Authorization.RefreshTokens)
}

go func() {
runGRPCServer()
}()

httpServer.StartHTTPServer()
}

func runGRPCServer() {
grpcServer := grpc.NewServer()
srv := &pb.GRPCServer{}
pb.RegisterAuthServiceServer(grpcServer, srv)

l, err := net.Listen("tcp", ":8080")
if err != nil {
log.Fatal(err)
}

if err := grpcServer.Serve(l); err != nil {
log.Fatal(err)
}
}
15 changes: 11 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ require (
gorm.io/gorm v1.24.2
)

require (
github.com/golang/protobuf v1.5.2 // indirect
google.golang.org/genproto v0.0.0-20230202175211-008b39050e57 // indirect
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.2.0 // indirect
)

require (
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-playground/locales v0.14.0 // indirect
Expand All @@ -24,8 +30,8 @@ require (
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.0.1 // indirect
github.com/ugorji/go/codec v1.2.7 // indirect
golang.org/x/net v0.2.0 // indirect
google.golang.org/protobuf v1.28.0 // indirect
golang.org/x/net v0.5.0 // indirect
google.golang.org/protobuf v1.28.1
gopkg.in/yaml.v2 v2.4.0 // indirect
)

Expand All @@ -43,8 +49,9 @@ require (
github.com/jinzhu/now v1.1.5 // indirect
github.com/lib/pq v1.10.7
github.com/stretchr/testify v1.8.1 // indirect
golang.org/x/sys v0.3.0 // indirect
golang.org/x/text v0.5.0 // indirect
golang.org/x/sys v0.4.0 // indirect
golang.org/x/text v0.6.0 // indirect
google.golang.org/grpc v1.52.3
)

// replace github.com/cheeeasy2501/auth-id/internal/transport/http/middleware => ./internal/transport/http/middleware
29 changes: 23 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,10 @@ github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx
github.com/golang-jwt/jwt/v4 v4.4.3 h1:Hxl6lhQFj4AnOX6MLrsCb/+7tCj7DxP7VA+2rDIq5AU=
github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
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/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo=
Expand Down Expand Up @@ -197,8 +199,10 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU=
golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw=
golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
Expand All @@ -218,6 +222,8 @@ golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18=
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
Expand All @@ -228,6 +234,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k=
golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
Expand All @@ -241,11 +249,20 @@ golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 h1:a2S6M0+660BgMNl++4JPlcAO/CjkqYItDEZwkoDQK7c=
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
google.golang.org/genproto v0.0.0-20230202175211-008b39050e57 h1:vArvWooPH749rNHpBGgVl+U9B9dATjiEhJzcWGlovNs=
google.golang.org/genproto v0.0.0-20230202175211-008b39050e57/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
google.golang.org/grpc v1.52.3 h1:pf7sOysg4LdgBqduXveGKrcEwbStiK2rtfghdzlUYDQ=
google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.2.0 h1:TLkBREm4nIsEcexnCjgQd5GQWaHcqMzwQV0TX9pq8S0=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.2.0/go.mod h1:DNq5QpG7LJqD2AamLZ7zvKE0DEpVl2BSEVjFycAAjRY=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
Expand Down
33 changes: 33 additions & 0 deletions internal/transport/grpc/v1/proto/authorize.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
syntax = "proto3";

package pb;

option go_package = "/pb";


message CheckTokenRequest {
string token = 1;
}

message CheckTokenResponse {
bool authorize = 1;
uint64 userId = 2;
}

message GetUserInformationRequest {
uint64 userId = 1;
}

message GetUserResponse {
string Avatar = 1;
string FirstName = 2;
string LastName = 3;
string MiddleName = 4;
string Email = 5;
}

service AuthService {
rpc CheckToken(CheckTokenRequest) returns (CheckTokenResponse);
rpc GetUserInformation(GetUserInformationRequest) returns (GetUserResponse);
}

Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func NewJWTMiddleware(s service.ITokenService) *JWTMiddleware {
// Проверяет токен
func (m *JWTMiddleware) Authorize() gin.HandlerFunc {
return func(ctx *gin.Context) {
header := ctx.GetHeader("Autorization")
header := ctx.GetHeader("Authorization")
if header == "" {
server.ErrorResponse(ctx, http.StatusUnauthorized, errors.New("Unauthorized"))
return
Expand Down
Loading

0 comments on commit d4a49e2

Please sign in to comment.