//[HttpPost] //public async Task<IActionResult> Facebook([FromBody] UserTokenIdModel token) //{ // try // { // var user = await _facebookAuthService.Authenticate(token); // await _signInManager.SignInAsync(user, true); // //var jwtToken = GenerateJwtToken(user.Email, user); // // authentication successful, then generate jwt token // string tokenInString = Elmah.MvcCore.Security.CustomizedClaimTypes.GetJwtSecurityTokenInString(user.Id.ToLower(), _appSettings.Secret); // return Ok(tokenInString); // } // catch (Exception e) // { // Debug.WriteLine(e.Message); // return BadRequest(e.Message); // } //} private async Task <Framework.WebApi.AuthenticationResponse> GetAuthenticationResponse( Elmah.MvcCore.Models.ApplicationUser user) { var loginResponse = new Framework.WebApi.AuthenticationResponse { Succeeded = true , IsLockedOut = false , IsNotAllowed = false , RequiresTwoFactor = false , EntityID = user != null ? user.EntityID : null }; // authentication successful, then generate jwt token string tokenInString = Elmah.MvcCore.Security.CustomizedClaimTypes.GetJwtSecurityTokenInString(user.Id.ToLower(), _appSettings.Secret); loginResponse.Token = tokenInString; // Load LogIn User related data if (loginResponse.Succeeded) { loginResponse.Roles = await _userManager.GetRolesAsync(user); } return(loginResponse); }
private async void OnLogIn() { PopupVM.ShowPopup(Framework.Resx.UIStringResource.Loading, false); this.FromLogInFromLogInPage = true; var client = new Elmah.WebApiClient.AuthenticationApiClient(Elmah.MVVMLightViewModels.WebServiceConfig.WebApiRootUrl); LoginResponse = await client.LogInAsync(this.Email, this.Password); if (LoginResponse.Succeeded) { LoginResponse.LoggedInSource = Framework.WebApi.LoggedInSource.LogInPage; PopupVM.HidePopup(); this.ErrorMessage = string.Empty; await Framework.Xaml.ApplicationPropertiesHelper.SetSignInData( this.Email , this.RememberMe?this.Password : null , this.RememberMe, this.AutoSignIn, LoginResponse.Token, LoginResponse.EntityID ?? 0, !LoginResponse.EntityID.HasValue, null); AppVM.SignInData = Framework.Xaml.ApplicationPropertiesHelper.GetSignInData(); this.IsVisible = false; App.Current.MainPage = new NavigationPage(new Elmah.XamarinForms.Pages.AppLoadingPage()); MessagingCenter.Send <Elmah.XamarinForms.ViewModels.AppLoadingVM, Framework.WebApi.AuthenticationResponse>(AppLoadingVM, Elmah.XamarinForms.ViewModels.AppLoadingVM.MessageTitle_LoadData, LoginResponse); } else { this.ErrorMessage = Framework.Resx.UIStringResource.Account_LogIn_FailureText; //PopupVM.HidePopup(); } }
public async Task <Framework.WebApi.AuthenticationResponse> LogoutAsync(string userName) { var model = new LoginModel { Email = userName, }; string url = GetHttpRequestUrl(ActionName_Logout); var response = await PostCommon <LoginModel, Framework.WebApi.AuthenticationResponse>(url, model); if (response == null) { response = new Framework.WebApi.AuthenticationResponse { Succeeded = false, IsLockedOut = false, IsNotAllowed = false, RequiresTwoFactor = false, }; } return(response); }
private async Task <Framework.WebApi.AuthenticationResponse> GetAuthenticationResponse( Elmah.MvcCore.Models.ApplicationUser user , Microsoft.AspNetCore.Identity.SignInResult result) { var loginResponse = new Framework.WebApi.AuthenticationResponse { Succeeded = result.Succeeded , IsLockedOut = result.IsLockedOut , IsNotAllowed = result.IsNotAllowed , RequiresTwoFactor = result.RequiresTwoFactor , EntityID = user != null ? user.EntityID : null }; // authentication successful, then generate jwt token string tokenInString = Elmah.MvcCore.Security.CustomizedClaimTypes.GetJwtSecurityTokenInString(user.Id.ToLower(), _appSettings.Secret); loginResponse.Token = tokenInString; // Load LogIn User related data if (loginResponse.Succeeded) { loginResponse.Roles = await _userManager.GetRolesAsync(user); #region TODO: Load more data to LoginResponse //// TODO: Load more data to LoginResponse //using (var scope = _serviceProvider.CreateScope()) //{ // var criteria = new NTierOnTime.CommonBLLEntities.EntityChainedQueryCriteriaIdentifier(); // criteria.Identifier.EntityID.NullableValueToCompare = user.EntityID; // var entityResponse = new NTierOnTime.AspNetMvcCoreViewModel.Entity.DashboardVM(); // TODO: how to IoC // entityResponse.CriteriaOfMasterEntity = criteria; // entityResponse.SetServiceProvider(this._serviceProvider); // await entityResponse.LoadData( // isToLoadFK_CourseCategory_Entity_ParentEntityID_List: false // , isToLoadFK_Album_Entity_Owner_List: false // , isToLoadFK_Comment_Entity_PostedByID_List: false // , isToLoadFK_EntityAddress_Entity_EntityID_List: false // , isToLoadFK_EntityAlbum_Entity_EntityID_List: false // , isToLoadFK_EntityCalendarItem_Entity_EntityID_List: false // , isToLoadFK_EntityCommentThread_Entity_EntityID_List: false // , isToLoadFK_EntityContact_Entity_EntityID_List: false // , isToLoadFK_EntityEmail_Entity_EntityID_List: false // , isToLoadFK_EntityScheduleGroup_Entity_EntityID_List: false // , isToLoadFK_EntityVirtualAddress_Entity_EntityID_List: false // , isToLoadFK_Liking_Entity_EntityID_List: false // , isToLoadFK_Liking_Entity_TheOtherSideEntityID_List: false // , isToLoadFK_MemberProgram_Entity_ProgramEntityID_List: false // , isToLoadFK_Membership_Entity_MasterEntityID_List: false // , isToLoadFK_Membership_Entity_SlaveEntityID_List: true // , isToLoadFK_ProgramScheduleCalendarItem_Entity_ProgramEntityID_List: false // , isToLoadFK_BusinessEntity_Entity_EntityID_FormView: false // , isToLoadFK_Class_Entity_EntityID_FormView: false // , isToLoadFK_Course_Entity_EntityID_FormView: false // , isToLoadFK_ActivitySummary_Entity_EntityID_FormView: false // , isToLoadFK_Membership_Entity_MembershipID_FormView: true // , isToLoadFK_Person_Entity_EntityID_FormView: true); // // 1. Entity // if (entityResponse.StatusOfMasterEntity == Framework.Services.BusinessLogicLayerResponseStatus.MessageOK || entityResponse.StatusOfMasterEntity == Framework.Services.BusinessLogicLayerResponseStatus.UIProcessReady) // { // loginResponse.Entity = entityResponse.MasterEntity; // } // // 2. Person // if (entityResponse.StatusOfFK_Person_Entity_EntityID_FormView == Framework.Services.BusinessLogicLayerResponseStatus.MessageOK || entityResponse.StatusOfFK_Person_Entity_EntityID_FormView == Framework.Services.BusinessLogicLayerResponseStatus.UIProcessReady) // { // loginResponse.HasPerson = entityResponse.StatusOfFK_Person_Entity_EntityID_FormView == Framework.Services.BusinessLogicLayerResponseStatus.MessageOK || entityResponse.StatusOfFK_Person_Entity_EntityID_FormView == Framework.Services.BusinessLogicLayerResponseStatus.UIProcessReady; // loginResponse.Person = entityResponse.FK_Person_Entity_EntityID_FormView; // } // // 3. Joined Memberships // if (entityResponse.StatusOfFK_Membership_Entity_SlaveEntityID_List == Framework.Services.BusinessLogicLayerResponseStatus.MessageOK || entityResponse.StatusOfFK_Membership_Entity_SlaveEntityID_List == Framework.Services.BusinessLogicLayerResponseStatus.UIProcessReady) // { // loginResponse.HasJoinedMemberShip = entityResponse.StatusOfFK_Membership_Entity_SlaveEntityID_List == Framework.Services.BusinessLogicLayerResponseStatus.MessageOK || entityResponse.StatusOfFK_Membership_Entity_SlaveEntityID_List == Framework.Services.BusinessLogicLayerResponseStatus.UIProcessReady; // loginResponse.JoinedMemberships = entityResponse.FK_Membership_Entity_SlaveEntityID_List; // } //} #endregion TODO: Load more data to LoginResponse } return(loginResponse); }
/// <summary> /// Will navigate to Dashboard page after this LoggedInProcess /// </summary> /// <param name="loginResponse"></param> /// <returns></returns> public async Task LoggedInProcess(Framework.WebApi.AuthenticationResponse loginResponse) { ProgressBarVM.Initialization(Color.Orange, 4); Elmah.MVVMLightViewModels.WebServiceConfig.Token = loginResponse.Token; // 1.1. Theme var theme = Framework.Xaml.ApplicationPropertiesHelper.GetTheme(); if (theme != Framework.Themes.Theme.Light) { ThemeSelectorVM.SwitchTheme(theme); } ProgressBarVM.Forward(); await AppVM.GetCurrentLocation(); ProgressBarVM.Forward(); // 1.2. Token: Elmah.MVVMLightViewModels.WebServiceConfig.Token = loginResponse.Token; // 2.1. CacheLists { var allCacheDataKey = Caching.ListsHelper.BuildCacheDataKey(Elmah.EntityContracts.Enums.CacheLists.__ALL__.ToString()); if (!Framework.Xaml.ApplicationPropertiesHelper.HasTableCachingData(allCacheDataKey)) { await Caching.ListsHelper.GetAndCacheLists(); } else { var cacheDataSetting = Framework.Xaml.ApplicationPropertiesHelper.GetTableCachingData(allCacheDataKey); if (cacheDataSetting.ShouldRefresh) { await Caching.ListsHelper.GetAndCacheLists(); } } } ProgressBarVM.Forward(); //// 2.2.GetAndCacheYourData //await NTierOnTime.MVVMLightViewModels.YourDataHelper.GetAndCacheYourData(); ProgressBarVM.Forward(); //await BusinessNavigationVM.InitializeActionItems(); if (loginResponse.LoggedInSource == Framework.WebApi.LoggedInSource.LogInPage || loginResponse.LoggedInSource == Framework.WebApi.LoggedInSource.AutoLogIn) { MessagingCenter.Send <Elmah.XamarinForms.ViewModels.DashboardVM, long>(DashboardVM, Elmah.XamarinForms.ViewModels.DashboardVM.MessageTitle_LoadData, loginResponse.EntityID.Value); App.Current.MainPage = new Elmah.XamarinForms.AppShell(); } else if (loginResponse.LoggedInSource == Framework.WebApi.LoggedInSource.RegisterPage) { // TODO: you can goto Wizard page here, after registed a new account. //NavigationVM.Person.SendMessage_Init_TabDashboard(new NTierOnTime.DataSourceEntities.PersonIdentifier { EntityID = loginResponse.EntityID.Value }); //App.Current.MainPage = new NavigationPage(new NTierOnTime.XamarinForms.Pages.Settings.PersonWizardPage { PersonID = loginResponse.EntityID?.ToString() }); } // 3.1. CheckAllPermissions //await PermissionHelper.I.CheckAllPermissions(); }