private async Task signupUser()
        {
            var validator   = new SignupValidator();
            var notificator = DependencyService.Get <IToastNotificator>();
            var publicData  = new UserPublicData();

            publicData.firstName = firstName;
            publicData.lastName  = lastName;
            var user = new UserModel()
            {
                Username    = email,
                Password    = password,
                Email       = email,
                phoneNumber = phoneNumber,
                publicData  = publicData
            };
            var result = validator.Validate(user);

            if (!result.IsValid)
            {
                await notificator.Notify(ToastNotificationType.Error, "Erreur", result.Errors[0].ErrorMessage, TimeSpan.FromSeconds(2));
            }
            else
            {
                user.publicData = publicData;
                var answer = await App.Current.MainPage.DisplayAlert("Confirmation", "Vous reconnaissez avoir lu et accepté les conditions générales ?", "Oui", "Non");

                if (answer == true)
                {
                    try
                    {
                        await publicData.SaveAsync();

                        await user.SignUpAsync();

                        user.ACL       = new ParseACL(user);
                        publicData.ACL = new ParseACL(user)
                        {
                            PublicReadAccess  = true,
                            PublicWriteAccess = false
                        };
                        await publicData.SaveAsync();

                        await user.SaveAsync();

                        await App.Current.MainPage.Navigation.PushAsync(new PhoneNumberCodePage());
                    }
                    catch (Exception e)
                    {
                        System.Diagnostics.Debug.WriteLine(e);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public async Task <object> Verification(PhoneVerificationRequest verificationRequest)
        {
            try
            {
                User user = await this._context.Users.FirstOrDefaultAsync(user => user.Id == verificationRequest.UserId);

                if (user.Role != RoleType.Unverified)
                {
                    return(new ResponseBase <string> {
                        Data = ResponseMessages.VerifiedUser
                    });
                }

                UserPublicData userData = await this._context.UsersPublicData.FirstOrDefaultAsync(user => user.UserId == verificationRequest.UserId);

                if (userData.SecretKey == verificationRequest.SecretKey && DateTime.Now < userData.SecretKeyValidTo)
                {
                    user.Role = RoleType.User;
                    await this._context.SaveChangesAsync();

                    return(new ResponseBase <string> {
                        Data = ResponseMessages.VerifiedUser
                    });
                }
                else
                {
                    userData.UnsuccessfullyVerificationAttempts++;
                    if (userData.UnsuccessfullyVerificationAttempts == 3)
                    {
                        userData.SecretKey = await this.SendMessageViaPhone(userData.User.Phone);

                        userData.SecretKeyValidTo = DateTime.Now.AddMinutes(SecretKeyToVerifyPhoneValidInMinutes);
                        userData.UnsuccessfullyVerificationAttempts = 0;

                        await this._context.SaveChangesAsync();

                        return(new ResponseBase <string> {
                            Status = ResponeStatusCodes.UnverifiedUser, Data = ResponseMessages.RepeatedVerification
                        });
                    }
                    await this._context.SaveChangesAsync();

                    return(new ResponseBase <string> {
                        Status = ResponeStatusCodes.BadRequest, Data = ResponseMessages.BadVerificationSecretKey
                    });
                }
            }
            catch (Exception ex)
            {
                return(new ResponseBase <string> {
                    Status = ResponeStatusCodes.UnexpectedServerError, Data = $"Oops... {ex.Message}"
                });
            }
        }
Ejemplo n.º 3
0
        public async Task <object> Register(Register register)
        {
            try
            {
                register.Phone = register.Phone.Trim()[0] == '+' ? register.Phone.Trim() : $"+{register.Phone.Trim()}";

                User user = this._context.Users.FirstOrDefault(user => user.Phone == register.Phone);

                if (user != null)
                {
                    return(new ResponseBase <string> {
                        Status = ResponeStatusCodes.UserAlreayExists, Data = ResponseMessages.UserAlreayExists
                    });
                }


                user = new User {
                    Phone = register.Phone, PasswordHash = register.Password.HashPassword()
                };


                UserPublicData userPublicData = new UserPublicData {
                    User = user, UserName = $"{register.FirstName} {register.LastName}"
                };

                await this._context.Users.AddAsync(user);

                await this._context.UsersPublicData.AddAsync(userPublicData);

                long secretKey = await this.SendMessageViaPhone(register.Phone);

                userPublicData.SecretKey        = secretKey;
                userPublicData.SecretKeyValidTo = DateTime.Now.AddMinutes(SecretKeyToVerifyPhoneValidInMinutes);

                await this._context.SaveChangesAsync();

                RegisterResponse userToReturn = new RegisterResponse {
                    Id = user.Id, Phone = user.Phone, UserName = userPublicData.UserName, SecretKey = secretKey
                };

                return(new ResponseBase <UserDTO> {
                    Data = userToReturn
                });
            }
            catch (Exception ex)
            {
                return(new ResponseBase <string> {
                    Status = ResponeStatusCodes.UnexpectedServerError, Data = $"Ooops. {ex.Message}"
                });
            }
        }
Ejemplo n.º 4
0
    }                                                        // ユーザー公開情報.

    public UserData(
        UserPublicData userPublicData
        )
    {
        UserPublicData = userPublicData;
    }