I'm trying to implement a controller to in golang ...
# support-questions-legacy
h
I'm trying to implement a controller to in golang for google signin although i not find the workflow and method that can help me do that here's my email signin controller for reference
Copy code
// HandleSignUp handles "POST /api/v1/signup".
func (c *UserController) HandleSignUp(gctx *gin.Context) (interface{}, error) {
    var (
        ctx = gctx.Request.Context()
        req SignUpReq
    )
    if err := gctx.ShouldBind(&req); err != nil {
        return nil, apierr.ErrInvalidRequest.WithMessage(err.Error())
    }

    newUUID := uuid.New()
    user := User{
        UserId:   newUUID,
        Username: req.Username,
        Mobile:   req.Mobile,
        Email:    req.Email,
        Role:     RoleTraveller.String(),
        Roles:    []string{RoleTraveller.String()},
        RolesMap: nil,
    }

    result, err := thirdpartyemailpassword.EmailPasswordSignUp(req.Email, req.Password)

    if err != nil {
        fmt.Printf("%s", err)
        return nil, apierr.ErrInternalServerError.WithMessage("Unable to create user at the moment")
    }
    if result.EmailAlreadyExistsError != nil {
        return nil, apierr.ErrResourceConflict.WithMessagef("user %s already exists", req.Email)
    }
Copy code
if result.OK != nil {
        _, err := userroles.CreateNewRoleOrAddPermissions(RoleTraveller.String(), []string{}, supertokens.MakeDefaultUserContextFromAPI(gctx.Request))
        if err != nil {
            return nil, err
        }
        user.ExtUserId = result.OK.User.ID
        user.Status = KYC_UNVERIFIED.String()
        if err := c.userStore.Save(ctx, &user); err != nil {
            if err != database.ErrKeyConflict {
                return nil, err
            }
            return nil, apierr.ErrResourceConflict.WithMessagef("email %s already exists", req.Email)
        }
        userSession, err := session.CreateNewSession(gctx.Request, gctx.Writer, result.OK.User.ID, map[string]interface{}{}, map[string]interface{}{})
        if err != nil {
            return nil, err
        }
        expiry, _ := userSession.GetExpiry()
        res := &SignUpRes{
            UserID: user.UserId.String(),
            Status: user.Status,
            Expiry: expiry,
        }
        return &res, nil
    }
    return nil, apierr.ErrInternalServerError.WithMessage("Unknown Error")
}
r
hey @hopinheimer i don't quite undertsand your quesiton.
h
I wanted to write some custom logic for when the user signin/up using social logins like google
r
You would need to override the signinup api
h
Can you help me with the postman collection
2 Views