Commit 2e27a2b3 authored by Andrei Mihu's avatar Andrei Mihu
Browse files

Improve Facebook Limited Login integration with standard Facebook authentication.

parent cf6d355a
Loading
Loading
Loading
Loading
+739 −729

File changed.

Preview size limit exceeded, changes collapsed.

+81 −0
Original line number Diff line number Diff line
@@ -173,6 +173,40 @@ func local_request_Nakama_SessionRefresh_0(ctx context.Context, marshaler runtim

}

func request_Nakama_SessionLogout_0(ctx context.Context, marshaler runtime.Marshaler, client NakamaClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
	var protoReq api.SessionLogoutRequest
	var metadata runtime.ServerMetadata

	newReader, berr := utilities.IOReaderFactory(req.Body)
	if berr != nil {
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
	}
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
	}

	msg, err := client.SessionLogout(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
	return msg, metadata, err

}

func local_request_Nakama_SessionLogout_0(ctx context.Context, marshaler runtime.Marshaler, server NakamaServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
	var protoReq api.SessionLogoutRequest
	var metadata runtime.ServerMetadata

	newReader, berr := utilities.IOReaderFactory(req.Body)
	if berr != nil {
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
	}
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
	}

	msg, err := server.SessionLogout(ctx, &protoReq)
	return msg, metadata, err

}

var (
	filter_Nakama_AuthenticateApple_0 = &utilities.DoubleArray{Encoding: map[string]int{"account": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
)
@@ -3604,6 +3638,29 @@ func RegisterNakamaHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser

	})

	mux.Handle("POST", pattern_Nakama_SessionLogout_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
		ctx, cancel := context.WithCancel(req.Context())
		defer cancel()
		var stream runtime.ServerTransportStream
		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/nakama.api.Nakama/SessionLogout")
		if err != nil {
			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
			return
		}
		resp, md, err := local_request_Nakama_SessionLogout_0(rctx, inboundMarshaler, server, req, pathParams)
		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
		ctx = runtime.NewServerMetadataContext(ctx, md)
		if err != nil {
			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
			return
		}

		forward_Nakama_SessionLogout_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)

	})

	mux.Handle("POST", pattern_Nakama_AuthenticateApple_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
		ctx, cancel := context.WithCancel(req.Context())
		defer cancel()
@@ -5292,6 +5349,26 @@ func RegisterNakamaHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli

	})

	mux.Handle("POST", pattern_Nakama_SessionLogout_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
		ctx, cancel := context.WithCancel(req.Context())
		defer cancel()
		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/nakama.api.Nakama/SessionLogout")
		if err != nil {
			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
			return
		}
		resp, md, err := request_Nakama_SessionLogout_0(rctx, inboundMarshaler, client, req, pathParams)
		ctx = runtime.NewServerMetadataContext(ctx, md)
		if err != nil {
			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
			return
		}

		forward_Nakama_SessionLogout_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)

	})

	mux.Handle("POST", pattern_Nakama_AuthenticateApple_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
		ctx, cancel := context.WithCancel(req.Context())
		defer cancel()
@@ -6682,6 +6759,8 @@ var (

	pattern_Nakama_SessionRefresh_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v2", "account", "session", "refresh"}, ""))

	pattern_Nakama_SessionLogout_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v2", "session", "logout"}, ""))

	pattern_Nakama_AuthenticateApple_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v2", "account", "authenticate", "apple"}, ""))

	pattern_Nakama_AuthenticateCustom_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v2", "account", "authenticate", "custom"}, ""))
@@ -6828,6 +6907,8 @@ var (

	forward_Nakama_SessionRefresh_0 = runtime.ForwardResponseMessage

	forward_Nakama_SessionLogout_0 = runtime.ForwardResponseMessage

	forward_Nakama_AuthenticateApple_0 = runtime.ForwardResponseMessage

	forward_Nakama_AuthenticateCustom_0 = runtime.ForwardResponseMessage
+8 −0
Original line number Diff line number Diff line
@@ -112,6 +112,14 @@ service Nakama {
    };
  }

  // Log out a session, invalidate a refresh token, or log out all sessions/refresh tokens for a user.
  rpc SessionLogout (api.SessionLogoutRequest) returns (google.protobuf.Empty) {
    option (google.api.http) = {
      post: "/v2/session/logout",
      body: "*"
    };
  }

  // Authenticate a user with an Apple ID against the server.
  rpc AuthenticateApple (api.AuthenticateAppleRequest) returns (api.Session) {
    option (google.api.http) = {
+47 −0
Original line number Diff line number Diff line
@@ -2493,6 +2493,39 @@
        ]
      }
    },
    "/v2/session/logout": {
      "post": {
        "summary": "Log out a session, invalidate a refresh token, or log out all sessions/refresh tokens for a user.",
        "operationId": "Nakama_SessionLogout",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiSessionLogoutRequest"
            }
          }
        ],
        "tags": [
          "Nakama"
        ]
      }
    },
    "/v2/storage": {
      "post": {
        "summary": "Get storage objects.",
@@ -3936,6 +3969,20 @@
      },
      "description": "A user's session used to authenticate messages."
    },
    "apiSessionLogoutRequest": {
      "type": "object",
      "properties": {
        "token": {
          "type": "string",
          "description": "Session token to log out."
        },
        "refreshToken": {
          "type": "string",
          "description": "Refresh token to invalidate."
        }
      },
      "description": "Log out a session, invalidate a refresh token, or log out all sessions/refresh tokens for a user."
    },
    "apiSessionRefreshRequest": {
      "type": "object",
      "properties": {
+38 −0
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@ type NakamaClient interface {
	AddGroupUsers(ctx context.Context, in *api.AddGroupUsersRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Refresh a user's session using a refresh token retrieved from a previous authentication request.
	SessionRefresh(ctx context.Context, in *api.SessionRefreshRequest, opts ...grpc.CallOption) (*api.Session, error)
	// Log out a session, invalidate a refresh token, or log out all sessions/refresh tokens for a user.
	SessionLogout(ctx context.Context, in *api.SessionLogoutRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Authenticate a user with an Apple ID against the server.
	AuthenticateApple(ctx context.Context, in *api.AuthenticateAppleRequest, opts ...grpc.CallOption) (*api.Session, error)
	// Authenticate a user with a custom id against the server.
@@ -196,6 +198,15 @@ func (c *nakamaClient) SessionRefresh(ctx context.Context, in *api.SessionRefres
	return out, nil
}

func (c *nakamaClient) SessionLogout(ctx context.Context, in *api.SessionLogoutRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
	out := new(emptypb.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/SessionLogout", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateApple(ctx context.Context, in *api.AuthenticateAppleRequest, opts ...grpc.CallOption) (*api.Session, error) {
	out := new(api.Session)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateApple", in, out, opts...)
@@ -809,6 +820,8 @@ type NakamaServer interface {
	AddGroupUsers(context.Context, *api.AddGroupUsersRequest) (*emptypb.Empty, error)
	// Refresh a user's session using a refresh token retrieved from a previous authentication request.
	SessionRefresh(context.Context, *api.SessionRefreshRequest) (*api.Session, error)
	// Log out a session, invalidate a refresh token, or log out all sessions/refresh tokens for a user.
	SessionLogout(context.Context, *api.SessionLogoutRequest) (*emptypb.Empty, error)
	// Authenticate a user with an Apple ID against the server.
	AuthenticateApple(context.Context, *api.AuthenticateAppleRequest) (*api.Session, error)
	// Authenticate a user with a custom id against the server.
@@ -959,6 +972,9 @@ func (UnimplementedNakamaServer) AddGroupUsers(context.Context, *api.AddGroupUse
func (UnimplementedNakamaServer) SessionRefresh(context.Context, *api.SessionRefreshRequest) (*api.Session, error) {
	return nil, status.Errorf(codes.Unimplemented, "method SessionRefresh not implemented")
}
func (UnimplementedNakamaServer) SessionLogout(context.Context, *api.SessionLogoutRequest) (*emptypb.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method SessionLogout not implemented")
}
func (UnimplementedNakamaServer) AuthenticateApple(context.Context, *api.AuthenticateAppleRequest) (*api.Session, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AuthenticateApple not implemented")
}
@@ -1227,6 +1243,24 @@ func _Nakama_SessionRefresh_Handler(srv interface{}, ctx context.Context, dec fu
	return interceptor(ctx, in, info, handler)
}

func _Nakama_SessionLogout_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.SessionLogoutRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).SessionLogout(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/SessionLogout",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).SessionLogout(ctx, req.(*api.SessionLogoutRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateApple_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AuthenticateAppleRequest)
	if err := dec(in); err != nil {
@@ -2449,6 +2483,10 @@ var _Nakama_serviceDesc = grpc.ServiceDesc{
			MethodName: "SessionRefresh",
			Handler:    _Nakama_SessionRefresh_Handler,
		},
		{
			MethodName: "SessionLogout",
			Handler:    _Nakama_SessionLogout_Handler,
		},
		{
			MethodName: "AuthenticateApple",
			Handler:    _Nakama_AuthenticateApple_Handler,
Loading