hopinheimer
08/05/2023, 11:10 AMhopinheimer
08/05/2023, 11:12 AM// 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)
}
hopinheimer
08/05/2023, 11:12 AMif 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")
}
rp_st
08/05/2023, 12:02 PMhopinheimer
08/05/2023, 1:45 PMrp_st
08/05/2023, 4:49 PMhopinheimer
08/05/2023, 6:35 PM