private UserCache AccessCacheUserData() { var userCache = (UserCache)MemoryCacheObject.GetCacheObject(ObjectCacheProfile.CACHE_PROFILE_USER + _userSession.UserId); if (userCache == null) { UserSecretInfoViewModel info = APIProvider.Authorize_GetNonAsync <UserSecretInfoViewModel>(_userSession.BearerToken, "Account", "GetSecretInfo", null, APIConstant.API_Resource_Authorize); if (info != null) { var patientId = (info.PatientId == null ? string.Empty : info.PatientId); UserCache cacheUserData = new UserCache(); cacheUserData.Image = (info.Image != null ? FileManagement.ByteArrayToImageBase64(info.Image) : string.Empty); cacheUserData.UserName = _userSession.UserName; cacheUserData.PatientId = patientId; cacheUserData.UserId = _userSession.UserId; MemoryCacheObject.CacheObject(ObjectCacheProfile.CACHE_PROFILE_USER + _userSession.UserId, cacheUserData); return(cacheUserData); } } return(userCache); }
public async Task <ActionResult> Login() { controllerName = this.ControllerContext.RouteData.Values["controller"].ToString(); if (WebSecurity.IsAuthenticated) { UserSecretInfoViewModel info = await APIProvider.Authorize_Get <UserSecretInfoViewModel>(_userSession.BearerToken, controllerName, "GetSecretInfo", null, APIConstant.API_Resource_Authorize); if (info != null) { return(RedirectToAction("Index", "Home")); } else { return(View()); } } else { Session.Abandon(); } //Session["SessionId"] = HttpContext.Session.SessionID; return(View()); }
public async Task <UserSecretInfoViewModel> GetSecretInfo() { var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); if (user == null) { return(null); } try { var data = new UserSecretInfoViewModel { Email = user.Email, Name = (user.Name == null ? user.UserName : user.Name), NameIdentifier = user.Id, Image = user.Image, PatientId = user.PatientId }; return(data); } catch (Exception ex) { return(null); } }
public async Task <ActionResult> Login(LoginModel model, string returnUrl) { //Check Captcha if (GlobalVar.IsreCaptcha) { var response = Request["g-recaptcha-response"]; var client = new WebClient(); var result = client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", ValueConstant.GooglereCAPTCHA_SecretKey, response)); var obj = JObject.Parse(result); var status = (bool)obj.SelectToken("success"); if (!status) { ModelState.AddModelError(string.Empty, ""); TempData["Alert"] = ApplicationGenerator.RenderResult(ApplicationGenerator.TypeResult.ERROR, ApplicationGenerator.GeneralActionMessage(null, ApplicationGenerator.TypeResult.reCAPTCHA)); return(View(model)); } } var token = AuthenAPIHelper.GetToken(model.UserName, model.Password); if (string.IsNullOrEmpty(token.AccessToken)) { var errorStr = "Có lỗi phát sinh khi đăng nhập: Không lấy được Token, kiểm tra tài khoản + password."; if (token.Json != null) { var error = JsonConvert.DeserializeObject <dynamic>(token.Json.ToString()); errorStr = error.error_description.ToString(); } ModelState.AddModelError(string.Empty, errorStr); TempData["Alert"] = ApplicationGenerator.RenderResult(ApplicationGenerator.TypeResult.ERROR, ApplicationGenerator.GeneralActionMessage(null, ApplicationGenerator.TypeResult.LOGINERROR)); Logger.LogError(new Exception(errorStr)); return(View(model)); } var tokenDynamic = JsonConvert.DeserializeObject <dynamic>(token.Json.ToString()); string username = tokenDynamic.userName; string access_token = tokenDynamic.access_token; //Get Secret User Info UserSecretInfoViewModel info = await APIProvider.Authorize_Get <UserSecretInfoViewModel>(access_token, controllerName, "GetSecretInfo", null, APIConstant.API_Resource_Authorize); if (info == null) { ModelState.AddModelError(string.Empty, "Không tìm thấy thông tin tài khoản"); TempData["Alert"] = ApplicationGenerator.RenderResult(ApplicationGenerator.TypeResult.ERROR, ApplicationGenerator.GeneralActionMessage(null, ApplicationGenerator.TypeResult.USER_NOT_EXIST)); return(View(model)); } var patientId = (info.PatientId == null ? string.Empty : info.PatientId); var claims = new List <Claim> { new Claim(ClaimTypes.NameIdentifier, info.NameIdentifier, ClaimValueTypes.String), new Claim(ClaimTypes.Email, info.Email, ClaimValueTypes.String), new Claim(ClaimTypes.Name, info.Name, ClaimValueTypes.String), new Claim(ValueConstant.AccountName, username, ClaimValueTypes.String), //new Claim(ValueConstant.AccountImage, info.Image, ClaimValueTypes.), new Claim(ValueConstant.AccountPatient, (info.PatientId == null ? string.Empty : info.PatientId), ClaimValueTypes.String), new Claim(ValueConstant.TOKEN, string.Format("{0}", access_token), ClaimValueTypes.String) }; UserCache cacheUserData = new UserCache(); cacheUserData.Image = (info.Image != null ? FileManagement.ByteArrayToImageBase64(info.Image) : string.Empty); cacheUserData.UserName = username; cacheUserData.PatientId = patientId; cacheUserData.UserId = info.NameIdentifier; MemoryCacheObject.CacheObject(ObjectCacheProfile.CACHE_PROFILE_USER + info.NameIdentifier, cacheUserData); var claimsIdentity = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie); AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = false }, claimsIdentity); HttpContext.User = AuthenticationManager.AuthenticationResponseGrant.Principal; return(RedirectToAction(returnUrl)); }