/// <summary> /// Gets the user details from database. /// </summary> /// <returns>The user details from database.</returns> /// <param name="conn">Conn.</param> public Model.AuthenticatedUser GetUserDetailsFromDatabase(SQLiteConnection conn) { UserService userServiceObject = new UserService (conn); Model.AuthenticatedUser authenticatedUser = new Model.AuthenticatedUser (); try { var user=userServiceObject.GetUser(); if(user!=null) { authenticatedUser.UserDetails = user; authenticatedUser.IsFirstTimeLoggedIn = false; if(authenticatedUser.UserDetails!=null && authenticatedUser.UserDetails.ExpiryDate!=null) { authenticatedUser.IsTokenActive = this.CheckIfTokenIsActive(authenticatedUser.UserDetails.ExpiryDate); } } else { authenticatedUser.UserDetails = null; authenticatedUser.IsFirstTimeLoggedIn = true; authenticatedUser.IsTokenActive = false; } } catch(Exception ex) { Debug.WriteLine ("Exception occured at GetUserDetailsFromDatabase Method : "+ex.Message); } return authenticatedUser; }
/// <summary> /// Connects to the BAL layer to get the authenticated user name /// </summary> /// <returns>The service.</returns> /// <param name="username">Username.</param> /// <param name="password">Password.</param> Model.AuthenticatedUser LoginToService(string username, string password) { LoginBAL loginBal = new LoginBAL(AppDelegate.DatabaseContext); Model.AuthenticatedUser user = loginBal.GetUserDetailsFromService(username, password); return(user); }
/// <summary> /// Gets the user details from service. /// </summary> /// <returns>The user details from service.</returns> /// <param name="userName">User name.</param> /// <param name="password">Password.</param> public Model.AuthenticatedUser GetUserDetailsFromService(String userName, String password) { IServices servicesObject = new Services(); AuthenticationReq request = new AuthenticationReq(); request.userName = userName; request.password = password; AuthenticationRes authenticationResult = null; Model.AuthenticatedUser authenticatedUser = new Model.AuthenticatedUser (); try { UserService userServiceObject = new UserService (conn); authenticationResult = servicesObject.authenticate (request); bool isTokenActive = this.CheckIfTokenIsActive(authenticationResult.expiryTime); authenticatedUser.IsFirstTimeLoggedIn = true; if (authenticationResult.result != null) authenticatedUser.Result = authenticationResult.result; if (!string.IsNullOrEmpty (authenticationResult.token)) { authenticatedUser.UserDetails = new Model.User (); authenticatedUser.UserDetails.Token = authenticationResult.token; authenticatedUser.UserDetails.FirstName = authenticationResult.firstName; authenticatedUser.UserDetails.LastName = authenticationResult.lastName; authenticatedUser.UserDetails.ExpiryDate = authenticationResult.expiryTime; authenticatedUser.IsTokenActive = isTokenActive; authenticatedUser.DBVersion=authenticationResult.DBVersion; //Delete the previous exist users userServiceObject.DeleteUser(conn); //save the details of the user in the database userServiceObject.SaveUser (authenticatedUser.UserDetails); try { var user=userServiceObject.GetUsers ().FirstOrDefault (); if (user != null && authenticatedUser!=null) { authenticatedUser.UserDetails.ID = user.ID; } } catch(Exception ex) { // To DO } } } catch(Exception ex) { } return authenticatedUser; }
public IHttpActionResult PutAsync([FromBody] Model.AuthenticatedUser login) { try { TokenStorage.GetInstance().RemoveToken(login.Token); AuthenticatedUser authUser = new AuthenticatedUser(); return(Ok(authUser)); } catch (Exception ex) { // Write the excption to a log return(InternalServerError()); } }
/// <summary> /// On authentication completion, user moves to Dashboard /// </summary> /// <param name="authenticatedUser">Authenticated user.</param> private void MoveToDashBoard(Model.AuthenticatedUser authenticatedUser) { if (authenticatedUser.Result.code == 0 || authenticatedUser.Result.code == 1) { AppDelegate.startAutoSync(); DashBoardViewController dashBoardViewController = this.Storyboard.InstantiateViewController("DashBoardViewController") as DashBoardViewController; dashBoardViewController.IsIntiatedFromAppDelegate = true; dashBoardViewController.IsFirstLogin = authenticatedUser.IsFirstTimeLoggedIn; DashBoardViewController.Token = authenticatedUser.UserDetails.Token; DashBoardViewController.UserName = string.Concat(authenticatedUser.UserDetails.FirstName, " ", authenticatedUser.UserDetails.LastName); this.NavigationController.PushViewController(dashBoardViewController, true); } else if (authenticatedUser.UserDetails != null && !authenticatedUser.IsTokenActive) { UIAlertView alert = new UIAlertView(@"Alert", @"Invalid Token", null, NSBundle.MainBundle.LocalizedString("OK", "OK")); alert.Show(); } }
/// <summary> /// Login button clicked method. /// Network Connectivity is checked. /// Authentication /// DB version is checked with the server and db updation happens according /// </summary> /// <param name="sender">Sender.</param> async partial void btnLogin_TouchUpInside(UIButton sender) { this.ResignFirstResponder(); this.txtUserName.ResignFirstResponder(); this.txtPassword.ResignFirstResponder(); try { this.ResignFirstResponder(); if (CrossConnectivity.Current.IsConnected == false) { if (CrossConnectivity.Current.IsConnected == false) { UIAlertView alert = new UIAlertView(@"Alert", @"You are not connected to the network", null, NSBundle.MainBundle.LocalizedString("OK", "OK")); alert.Show(); return; } } if (txtUserName.Text.Length <= 0 || txtPassword.Text.Length <= 0) { UIAlertView alert = new UIAlertView(@"Alert", @"Please fill in both username and password", null, NSBundle.MainBundle.LocalizedString("OK", "OK")); alert.Show(); return; } if (txtUserName.Text.ToUpper() == Constants.AdminUserID && txtPassword.Text.ToUpper() == Constants.AdminPassword) { config con = this.Storyboard.InstantiateViewController("config") as config; this.NavigationController.PushViewController(con, true); } else if (txtUserName.Text.ToUpper() == Constants.AdminUserID && txtPassword.Text.ToUpper() != Constants.AdminPassword) { UIAlertView alert = new UIAlertView(@"Alert", @"Invalid Username Or Password", null, NSBundle.MainBundle.LocalizedString("OK", "OK")); alert.Show(); } else { if (AppDelegate.DatabaseContext != null) { //AppDelegate del=new AppDelegate(); loginScrollView.ContentOffset = new CGPoint(0, 0); LoadOverLayPopup(); //getter method should return if we should allow going to dashboard or not string username = txtUserName.Text; string password = txtPassword.Text; authenticatedUser = await Task.Run(() => LoginToService(username, password)); HideOverLay(); if (authenticatedUser.Result != null && (authenticatedUser.Result.code == 0 || authenticatedUser.Result.code == 1) && authenticatedUser.UserDetails != null && authenticatedUser.IsTokenActive) { AppDelegate.user = authenticatedUser; using (MasterDataUpdateService masterDataUpdateService = new MasterDataUpdateService(AppDelegate.DatabaseContext)) { string dbVersion = "1.0"; using (UserSettingService usrSetting = new UserSettingService(AppDelegate.DatabaseContext)) { var dbVersions = usrSetting.GetUserSettings().Where(u => u.SettingName == "DBVersion"); if (dbVersions != null && dbVersions.Count() > 0) { dbVersion = dbVersions.FirstOrDefault().SettingValue; } } var AppDbVersion = string.IsNullOrEmpty(dbVersion) ?1:float.Parse(dbVersion); var serverDBVersion = string.IsNullOrEmpty(authenticatedUser.DBVersion) ?1:float.Parse(authenticatedUser.DBVersion); if (AppDbVersion < serverDBVersion) { UIAlertView alert1 = new UIAlertView(@"Alert", @"Master Data update available,DB update is going to start.", null, NSBundle.MainBundle.LocalizedString("Ok", "Ok")); alert1.Show(); alert1.Clicked += async(DBsender, buttonArgs) => { masterDataUpdateService.progressDelegate = this.UpdateProgress; this.ResignFirstResponder(); this.View.UserInteractionEnabled = false; progressView.Hidden = false; dataProgressLabel.Hidden = false; CGAffineTransform transform = CGAffineTransform.MakeScale(1.0f, 6.0f); progressView.Transform = transform; MasterDataUpdateStatus resultMasterData = await Task.Run(() => masterDataUpdateService.UpdateDatabaseService(authenticatedUser.UserDetails.Token)); progressView.Hidden = true; dataProgressLabel.Hidden = true; if (resultMasterData != null) { UIAlertView alert = new UIAlertView(@"Alert", resultMasterData.ErrorMessage, null, NSBundle.MainBundle.LocalizedString("OK", "OK")); alert.Show(); if (resultMasterData.Result == false) { this.View.UserInteractionEnabled = true; AppDelegate.deleteSession(); } else { this.View.UserInteractionEnabled = true; MoveToDashBoard(authenticatedUser); } } else { this.View.UserInteractionEnabled = true; } }; } else { MoveToDashBoard(authenticatedUser); } } } else if (authenticatedUser.Result != null && (authenticatedUser.Result.code == 0 || authenticatedUser.Result.code == 1) && authenticatedUser.UserDetails != null && !authenticatedUser.IsTokenActive) { UIAlertView alert1 = new UIAlertView(@"Invalid Token", @"Token Expired", null, NSBundle.MainBundle.LocalizedString("OK", "OK")); alert1.Show(); } else { this.ShowErrorResponse(authenticatedUser.Result.code); } } } } catch (Exception ex) { Debug.WriteLine("Exception Occured in btnLogin_TouchUpInside method due to " + ex.Message); } finally { progressView.Hidden = true; dataProgressLabel.Hidden = true; this.View.UserInteractionEnabled = true; } }