Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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));
        }