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); } } } }
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}" }); } }
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}" }); } }
} // ユーザー公開情報. public UserData( UserPublicData userPublicData ) { UserPublicData = userPublicData; }