From b17438db1f62b5f0e87165a51f260df65f859227 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D1=8F?= <ваня@DESKTOP-BLDCGMT> Date: Wed, 23 Nov 2022 23:56:01 +0300 Subject: [PATCH] [FIX] Registration and forgot password --- source/EduCATS/Data/DataAccess.cs | 12 +++++++++ source/EduCATS/Data/DataAccessCallbacks.cs | 7 ++++++ source/EduCATS/EduCATS.csproj | 5 ---- .../Networking/AppServices/AppServices.cs | 10 ++++++++ source/EduCATS/Networking/Links.cs | 5 ++++ .../ViewModels/ForgotPasswordPageViewModel.cs | 4 +-- .../ViewModels/RegistrationPageViewModel.cs | 24 ++++++++++-------- .../Views/RegistrationPageView.cs | 25 +++++++------------ 8 files changed, 58 insertions(+), 34 deletions(-) diff --git a/source/EduCATS/Data/DataAccess.cs b/source/EduCATS/Data/DataAccess.cs index 9cb75c49..8a9291ca 100644 --- a/source/EduCATS/Data/DataAccess.cs +++ b/source/EduCATS/Data/DataAccess.cs @@ -173,6 +173,18 @@ public async static Task GetOnlyGroups(int subjectId) return await GetDataObject(dataAccess, false) as GroupModel; } + /// + /// Fetch groups data. + /// + /// Subject ID. + /// Group data. + public async static Task> GetGroupsData() + { + var dataAccess = new DataAccess( + "groups_fetch_error", getGroupsDataCallback()); + return await GetDataObject(dataAccess, true) as List; + } + public async static Task GetLecturesTest(int subjectId, int groupId) { var dataAccess = new DataAccess( diff --git a/source/EduCATS/Data/DataAccessCallbacks.cs b/source/EduCATS/Data/DataAccessCallbacks.cs index 4e996602..cbdbb9ba 100644 --- a/source/EduCATS/Data/DataAccessCallbacks.cs +++ b/source/EduCATS/Data/DataAccessCallbacks.cs @@ -83,6 +83,13 @@ public static partial class DataAccess static async Task getGroupsCallback( int subjectId) => await AppServices.GetOnlyGroups(subjectId); + /// + /// Groups data callback. + /// + /// Subject ID. + /// Group data. + static async Task getGroupsDataCallback() => await AppServices.GetGroupsData(); + /// /// Laboratory works callback. /// diff --git a/source/EduCATS/EduCATS.csproj b/source/EduCATS/EduCATS.csproj index 5e6d8318..20c2b760 100644 --- a/source/EduCATS/EduCATS.csproj +++ b/source/EduCATS/EduCATS.csproj @@ -54,7 +54,6 @@ - @@ -89,7 +88,6 @@ - @@ -99,7 +97,6 @@ - @@ -108,12 +105,10 @@ - - diff --git a/source/EduCATS/Networking/AppServices/AppServices.cs b/source/EduCATS/Networking/AppServices/AppServices.cs index 7ef70e57..c6760acf 100644 --- a/source/EduCATS/Networking/AppServices/AppServices.cs +++ b/source/EduCATS/Networking/AppServices/AppServices.cs @@ -153,6 +153,16 @@ public static async Task GetOnlyGroups(int subjectId) return await AppServicesController.Request($"{Links.GetOnlyGroups}/{subjectId}"); } + /// + /// Fetch groups data. + /// + /// Subject ID. + /// Group data. + public static async Task GetGroupsData() + { + return await AppServicesController.Request($"{Links.GetGroupsData}"); + } + /// /// Fetch laboratory works data request. /// diff --git a/source/EduCATS/Networking/Links.cs b/source/EduCATS/Networking/Links.cs index d454eeba..b5b21bca 100644 --- a/source/EduCATS/Networking/Links.cs +++ b/source/EduCATS/Networking/Links.cs @@ -52,6 +52,11 @@ public static class Links /// public static string GetOnlyGroups => $"{Servers.Current}/Services/CoreService.svc/GetOnlyGroups"; + /// + /// Get groups data URL. + /// + public static string GetGroupsData => $"{Servers.Current}/Administration/GetGroupsJson"; + /// /// Get laboratory works URL. /// diff --git a/source/EduCATS/Pages/ForgotPassword/ViewModels/ForgotPasswordPageViewModel.cs b/source/EduCATS/Pages/ForgotPassword/ViewModels/ForgotPasswordPageViewModel.cs index f7fb3d93..05ddaa85 100644 --- a/source/EduCATS/Pages/ForgotPassword/ViewModels/ForgotPasswordPageViewModel.cs +++ b/source/EduCATS/Pages/ForgotPassword/ViewModels/ForgotPasswordPageViewModel.cs @@ -68,8 +68,8 @@ public bool LatinPassword() { for (int i = 0; i < NewPassword.Length; i++) { - if (!(((NewPassword[i] >= 'a') && (NewPassword[i] <= 'z')) || ((NewPassword[i] >= 'A') && (NewPassword[i] <= 'Z')) || - (int.Parse(NewPassword[i].ToString()) >= 0) && (int.Parse(NewPassword[i].ToString()) <= 9))) + if (!(((NewPassword[i] >= 'a') && (NewPassword[i] <= 'z')) || ((NewPassword[i] >= 'A') && (NewPassword[i] <= 'Z')) || (NewPassword[i] == '_') || + ((NewPassword[i] >= '0') && NewPassword[i] <= '9'))) { latin_password = false; break; diff --git a/source/EduCATS/Pages/Registration/ViewModels/RegistrationPageViewModel.cs b/source/EduCATS/Pages/Registration/ViewModels/RegistrationPageViewModel.cs index c5e55142..5fc5e494 100644 --- a/source/EduCATS/Pages/Registration/ViewModels/RegistrationPageViewModel.cs +++ b/source/EduCATS/Pages/Registration/ViewModels/RegistrationPageViewModel.cs @@ -44,8 +44,8 @@ public bool checkCredentials() string.IsNullOrEmpty(ConfirmPassword) || string.IsNullOrEmpty(Name) || string.IsNullOrEmpty(Surname) || - ReferenceEquals(Group.Id, null) || - ReferenceEquals(SelectedQuestionId, null) || + ReferenceEquals(Group, null) || + ReferenceEquals(SelectedQuestionId, 0) || string.IsNullOrEmpty(AnswerToSecretQuestion)) { return false; @@ -72,8 +72,8 @@ public bool LatinPassword() for (int i = 0; i < Password.Length; i++) { - if (!(((Password[i] >= 'a') && (Password[i] <= 'z')) || ((Password[i] >= 'A') && (Password[i] <= 'Z')) || - (int.Parse(Password[i].ToString()) >= 0) && (int.Parse(Password[i].ToString()) <= 9))) + if (!(((Password[i] >= 'a') && (Password[i] <= 'z')) || ((Password[i] >= 'A') && (Password[i] <= 'Z')) || (Password[i] == '_') || + ((Password[i] >= '0') && Password[i] <= '9'))) { latin_password = false; break; @@ -98,7 +98,7 @@ public bool CheckNameOfUser(string nameOfUser) ((nameOfUser[i] >= 'a') && (nameOfUser[i] <= 'z')) || ((nameOfUser[i] >= 'A') && (nameOfUser[i] <= 'Z')) || ((nameOfUser[i] >= 'а') && (nameOfUser[i] <= 'я')) || ((nameOfUser[i] >= 'А') && (nameOfUser[i] <= 'Я')) || ((nameOfUser[i] == '_') || (nameOfUser[i] == ' ') || (nameOfUser[i] == '-')) || - ((int.Parse(nameOfUser[i].ToString()) >= 0 && int.Parse(nameOfUser[i].ToString()) <= 9)))) + (nameOfUser[i] >= '0' && nameOfUser[i] <= '9'))) { name = false; break; @@ -120,7 +120,7 @@ public bool LatinUserName() for (int i = 0; i < UserName.Length; i++) { if (!(((UserName[i] >= 'a') && (UserName[i] <= 'z')) || ((UserName[i] >= 'A') && (UserName[i] <= 'Z')) - || ((int.Parse(UserName[i].ToString()) >= 0) && (int.Parse(UserName[i].ToString()) <= 9)) + || ((UserName[i] >= '0') && (UserName[i] <= '9')) || (UserName[i] == '_') || (UserName[i] == '.') || (UserName[i] == '-') @@ -147,14 +147,16 @@ public async Task> startRegister() bool correctPatronymic = true; bool correctName = CheckNameOfUser(Name); bool correctSurname = CheckNameOfUser(Surname); + bool secretAnswer = CheckNameOfUser(AnswerToSecretQuestion); if (Patronymic != null) { correctPatronymic = CheckNameOfUser(Patronymic); } SelectedQuestionId = 0; int uppercase = UpperCaseLettersInPassword(); - bool latin_password = LatinPassword(); - bool latin_username = LatinUserName(); + bool latinPassword = LatinPassword(); + bool latinUsername = LatinUserName(); + if (QuestionId == CrossLocalization.Translate("mother_last_name")) { SelectedQuestionId = 1; @@ -171,7 +173,7 @@ public async Task> startRegister() var userExists = await VerifyUserNameAsync(UserName); if (JsonConvert.DeserializeObject(userExists.Key) == "true") { - _services.Dialogs.ShowError(CrossLocalization.Translate("")); + _services.Dialogs.ShowError(CrossLocalization.Translate("user_exists")); return Task.FromResult(null); } @@ -182,7 +184,7 @@ public async Task> startRegister() return Task.FromResult(null); } - if (!(latin_username == true)) + if (!(latinUsername == true)) { _services.Dialogs.ShowMessage(CrossLocalization.Translate("username_error"), CrossLocalization.Translate("latin_letters")); @@ -195,7 +197,7 @@ public async Task> startRegister() return Task.FromResult(null); } - if (!(uppercase != 0 && latin_password == true)) + if (!(uppercase != 0 && latinPassword == true)) { _services.Dialogs.ShowMessage(CrossLocalization.Translate("password_not_correct"), CrossLocalization.Translate("latin_password")); diff --git a/source/EduCATS/Pages/Registration/Views/RegistrationPageView.cs b/source/EduCATS/Pages/Registration/Views/RegistrationPageView.cs index 08d8e130..fbc51a4a 100644 --- a/source/EduCATS/Pages/Registration/Views/RegistrationPageView.cs +++ b/source/EduCATS/Pages/Registration/Views/RegistrationPageView.cs @@ -1,4 +1,5 @@ -using EduCATS.Data.Models; +using EduCATS.Data; +using EduCATS.Data.Models; using EduCATS.Helpers.Forms; using EduCATS.Helpers.Forms.Styles; using EduCATS.Pages.Registration.ViewModels; @@ -37,23 +38,15 @@ public RegistrationPageView() BindingContext = new RegistrationPageViewModel(new PlatformServices()); NavigationPage.SetHasNavigationBar(this, false); BackgroundColor = Color.FromHex(Theme.Current.AppBackgroundColor); - WebRequest request = WebRequest.Create("http://educats.by/Administration/GetGroupsJson"); - WebResponse response = request.GetResponse(); - string json = ""; - using (Stream stream = response.GetResponseStream()) - { - using (StreamReader reader = new StreamReader(stream)) - { - string line = ""; - while ((line = reader.ReadLine()) != null) - { - json += line; - } - } - }; - groupData = JsonConvert.DeserializeObject>(json); + setGroupData(); + } + + async void setGroupData() + { + groupData = await DataAccess.GetGroupsData(); createView(); } + void createView() { var backgroundImage = createBackgroundImage();