public async Task <IActionResult> Login([FromBody] LoginInputModel loginInputModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = await _signInManager.PasswordSignInAsync(
                loginInputModel.Username,
                loginInputModel.Password,
                false, false
                );

            if (!result.Succeeded)
            {
                return(this.BadRequest());
            }

            var user = await _userManager.Users.FirstOrDefaultAsync(u =>
                                                                    u.UserName == loginInputModel.Username);

            var token = _authenticationTokenGenerator.Generate(user);

            var outputModel = new LoginOutputModel()
            {
                Token     = token.Value,
                ExpiresIn = token.ExpiresIn,
                TokenType = token.TokenType
            };

            return(Ok(outputModel));
        }
예제 #2
0
 public JsonResultModel Login(string userName, string password)
 {
     try
     {
         var user = cnn.Customers.Where(x => x.IsActive && (x.Phone == userName || x.Email == userName)).FirstOrDefault();
         if (user == null)
         {
             return(rp.response(0, 0, "Tài khoản hoặc mật khẩu không lợp lệ", null));
         }
         if (!Util.CheckPass(password, user.Password))
         {
             return(rp.response(0, 0, "Tài khoản hoặc mật khẩu không lợp lệ", null));
         }
         if (user.Status.Value.Equals(SystemParam.NO_ACTIVE))
         {
             return(rp.response(0, 0, "Tài khoản của bạn tạm thời bị khóa", null));
         }
         else
         {
             LoginOutputModel data  = new LoginOutputModel();
             string           token = Util.CreateMD5(DateTime.Now.ToString());
             data.Id    = user.ID;
             data.Token = token;
             data.Name  = user.Name;
             user.Token = token;
             cnn.SaveChanges();
             HttpContext.Current.Session["Client"] = data;
             return(rp.response(1, 1, "Thành công", null));
         }
     }
     catch
     {
         return(rp.serverError());
     }
 }
예제 #3
0
        public async Task <IActionResult> SwitchTenantAsync([FromRoute] long tenantId, [FromServices] ITenantRepository tenantRepository, [FromQuery] int?expiresIn)
        {
            var tenant = tenantRepository.Get(tenantId);

            if (tenant == null)
            {
                return(JsonNotFound($"Tenant ID {tenantId} is not found."));
            }

            Result <List <Claim>, string> authResult = await loginLogic.AuthorizeAsync(UserName, null, tenantId);

            // 結果からトークンを作成
            var token = loginLogic.GenerateToken(authResult.Value, expiresIn);

            var result = new LoginOutputModel()
            {
                Token      = token.AccessToken,
                UserName   = UserName,
                TenantId   = tenantId,
                TenantName = tenant.DisplayName,
                ExpiresIn  = token.ExpiresIn
            };

            return(JsonOK(result));
        }
예제 #4
0
        public async Task <LoginOutputModel> Login(LoginInputModel input)
        {
            var user = await _userRepository.GetAll().FirstOrDefaultAsync(
                p => p.UserName == input.UserNameOrEmail ||
                p.Email == input.UserNameOrEmail);

            if (user == null)
            {
                throw new KeyNotFoundException();
            }
            var hashSaltandIteration = 1000 + ":" + user.PasswordSalt + ":" + user.PasswordHash;
            var isValidate           = PasswordHelper.ValidatePassword(input.Password, hashSaltandIteration);

            if (isValidate)
            {
                var model = new LoginOutputModel
                {
                    Token   = BuildToken(user),
                    Id      = user.Id,
                    IsAdmin = user.IsAdmin
                };
                //BackgroundJob.Enqueue(() => SendMailHelper.SendMail("kullanıcı giriş yaptı"));
                return(model);
            }

            return(new LoginOutputModel());
        }
예제 #5
0
        public string ChangePassword(ChangePasswordModel changePasswordModel, LoginOutputModel loginOutputModel)
        {
            string msg = string.Empty;;

            if (loginOutputModel != null && !string.IsNullOrEmpty(loginOutputModel.Email))
            {
                var userData = _db.MstUsers.Where(x => x.IsActive && x.Email.Equals(loginOutputModel.Email) && x.Password.Equals(changePasswordModel.OldPassword)).FirstOrDefault();
                if (userData != null)
                {
                    if (changePasswordModel.NewPassword == changePasswordModel.ConfirmPassword)
                    {
                        userData.Password         = changePasswordModel.ConfirmPassword;
                        userData.ModifiedBy       = loginOutputModel.UserId;
                        userData.ModifiedDate     = DateTime.Now;
                        _db.Entry(userData).State = EntityState.Modified;
                        _db.SaveChanges();
                        msg = "changed";
                    }
                    else
                    {
                        msg = "New password and confirm password are not same.";
                    }
                }
                else
                {
                    msg = "Invalid Old password.";
                }
            }
            else
            {
                msg = "You are not logged in.";
            }
            return(msg);
        }
        public int CreateFeedBack(string Content)
        {
            try
            {
                LoginOutputModel cus = client;
                if (cus != null && !String.IsNullOrEmpty(Content))
                {
                    Feedback fd = new Feedback();
                    fd.CustomerID  = cus.Id;
                    fd.Content     = Content;
                    fd.Status      = SystemParam.ACTIVE;
                    fd.IsActive    = SystemParam.ACTIVE;
                    fd.CreatedDate = DateTime.Now;
                    fd.Type        = 1;

                    gn.cnn.Feedbacks.Add(fd);
                    gn.cnn.SaveChanges();
                    return(1);
                }


                return(-1);
            }
            catch (Exception e)
            {
                e.ToString();
                return(0);
            }
        }
 public JsonResultModel LoginWeb(string account, string password)
 {
     try
     {
         var user = cnn.Users.Where(u => u.IsActive.Equals(ACTIVE) && u.Phone.Equals(account) || u.Name.Equals(account));
         if (user.Count() > 0)
         {
             User us = user.FirstOrDefault();
             if (Util.CheckPass(password, us.Password))
             {
                 string           token = Util.CreateMD5(DateTime.Now.ToString());
                 LoginOutputModel data  = new LoginOutputModel();
                 data.Account = us.Name;
                 data.Name    = us.Name;
                 data.Role    = us.Role;
                 data.Id      = us.ID;
                 data.Token   = token;
                 us.Token     = token;
                 cnn.SaveChanges();
                 HttpContext.Current.Session[SystemParam.ADMIN] = data;
                 return(rp.response(SUCCESS, SUCCESS_CODE, SUCCESS_MESSAGE, ""));
             }
             else
             {
                 return(rp.response(FAIL_LOGIN, FAIL, ERROR_MESSAGE_LOGIN_FAIL, ""));
             }
         }
         return(rp.response(FAIL_LOGIN, FAIL, ERROR_MESSAGE_LOGIN_FAIL, ""));
     }
     catch (Exception e)
     {
         e.ToString();
         return(rp.serverError());
     }
 }
예제 #8
0
        public IActionResult Login(LoginInputModel data)
        {
            LoginInputModel  login      = new LoginInputModel();
            LoginOutputModel OutPutData = new LoginOutputModel();

            try
            {
                login.UserName = data.UserName;
                login.Password = data.Password;
                JsonConvert.SerializeObject(login);
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(BaseAPI + "Profile/");
                    //HTTP POST
                    var postTask = client.PostAsJsonAsync <LoginInputModel>("Login", login);
                    postTask.Wait();

                    var result = postTask.Result;
                    if (result.IsSuccessStatusCode)
                    {
                        var content = result.Content.ReadAsStringAsync();
                        LoginResponseModel logincontent = Newtonsoft.Json.JsonConvert.DeserializeObject <LoginResponseModel>(content.Result);
                        if (logincontent.data != null && logincontent.data.UserID.ToString() != "" && logincontent.data.IsActive != false)
                        {
                            //if (logincontent.data.RoleName.ToString() == HttpContext.Session.GetString(Loginfrom) || HttpContext.Session.GetString(Loginfrom).Contains(logincontent.data.RoleName.ToString()))
                            //{

                            //}
                            //else
                            //{
                            //	ModelState.AddModelError(string.Empty, "Terjadi kesalahan server. Hubungi admin.");
                            //}
                            HttpContext.Session.SetString(SessionKeyID, logincontent.data.UserID.ToString());
                            HttpContext.Session.SetString(SessionKeyName, logincontent.data.UserName.ToString());
                            HttpContext.Session.SetString(SessionKeyFName, logincontent.data.FirstName.ToString());
                            HttpContext.Session.SetString(SessionKeyLName, logincontent.data.LastName.ToString());
                            HttpContext.Session.SetString(SessionKeyRole, logincontent.data.RoleName.ToString());
                            HttpContext.Session.SetString(SessionKeyDomain, Domain);
                            OutPutData = logincontent.data;
                        }
                        else
                        {
                            ModelState.AddModelError(string.Empty, "Terjadi kesalahan server. Hubungi admin.");
                        }
                    }
                    else
                    {
                        ModelState.AddModelError(string.Empty, "Terjadi kesalahan server. Hubungi admin.");
                    }
                }
            }
            catch (Exception e)
            {
                ModelState.AddModelError(string.Empty, "Terjadi kesalahan server. Hubungi admin.");
            }
            return(Json(OutPutData));
        }
예제 #9
0
 public int ChangePassword(string CurrentPassword, string NewPassword)
 {
     try
     {
         LoginOutputModel cus = client;
         if (cus != null)
         {
             return(customerBusiness.ChangePassword(cus.Id, CurrentPassword, NewPassword));
         }
         return(SystemParam.ERROR);
     }
     catch
     {
         return(SystemParam.ERROR);
     }
 }
예제 #10
0
 public JsonResultModel ChangePassUser(string OldPass, string NewPass)
 {
     try
     {
         LoginOutputModel session = (LoginOutputModel)HttpContext.Current.Session[SystemParam.ADMIN];
         User             u       = cnn.Users.Find(session.Id);
         if (Util.CheckPass(OldPass, u.Password))
         {
             u.Password = Util.GenPass(NewPass);
             cnn.SaveChanges();
             return(rp.response(SystemParam.SUCCESS, SystemParam.SUCCESS_CODE, SystemParam.SUCCESS_MESSAGE, ""));
         }
         return(rp.response(SystemParam.ERROR, SystemParam.FAIL, SystemParam.ERROR_MESSAGE_CHECK_PASS_FAIL, ""));
     }
     catch
     {
         return(rp.serverError());
     }
 }
예제 #11
0
        public JsonResultModel Register(RegisterCustomerInputModel input)
        {
            try
            {
                if (cnn.Customers.Any(x => (x.Phone == input.phone || x.Email == input.email) && x.IsActive))
                {
                    return(rp.response(0, 0, "Email hoặc số điện thoại đã tồn tại", null));
                }
                else
                {
                    Customer cus = new Customer();
                    cus.Address     = input.address;
                    cus.CreatedDate = DateTime.Now;
                    cus.Email       = input.email;
                    cus.DistrictID  = input.district_id;
                    cus.ProvinceID  = input.province_id;
                    cus.Phone       = input.phone;
                    cus.Password    = Util.GenPass(input.password);
                    cus.VillageID   = input.village_id;
                    cus.Name        = input.name;
                    cus.Token       = Util.CreateMD5(DateTime.Now.ToString());
                    cus.IsActive    = true;
                    cus.Status      = SystemParam.ACTIVE;
                    cnn.Customers.Add(cus);
                    cnn.SaveChanges();

                    LoginOutputModel data = new LoginOutputModel();
                    data.Id    = cus.ID;
                    data.Name  = cus.Name;
                    data.Token = cus.Token;

                    HttpContext.Current.Session["Client"] = data;

                    return(rp.response(1, 1, "Đăng ký thành công", data));
                }
            }
            catch (Exception ex)
            {
                return(rp.serverError());
            }
        }
예제 #12
0
        public async Task <IActionResult> LoginAsync([FromBody] LoginInputModel model, [FromServices] ITenantRepository tenantRepository)
        {
            //入力値チェック
            if (!ModelState.IsValid)
            {
                return(JsonBadRequest("Invalid inputs."));
            }

            // ユーザ名の前後の空白は除去
            model.UserName = model.UserName.Trim();

            //ユーザ情報からクレームを取得
            Result <List <Claim>, string> signInResult = await loginLogic.SignInAsync(model.UserName, model.Password, model.TenantId);

            if (!signInResult.IsSuccess)
            {
                //失敗
                return(JsonBadRequest(signInResult.Error));
            }

            // 結果からトークンを作成
            var token = loginLogic.GenerateToken(signInResult.Value, model.ExpiresIn);

            //Tenant name must not be null. Hence "Single" is intended use here.
            // string tenantName = signInResult.Value.Single(c => c.Type == ApplicationConst.ClaimTypeTenantName).Value;
            long tenantId = long.Parse(signInResult.Value.FirstOrDefault(c => c.Type == ClaimTypes.GroupSid).Value);

            //テナント取得(ここまでに存在チェックは行われているハズ)
            var tenant = tenantRepository.Get(tenantId);

            var result = new LoginOutputModel()
            {
                Token      = token.AccessToken,
                UserName   = model.UserName,
                TenantId   = tenantId,
                TenantName = tenant.DisplayName,
                ExpiresIn  = token.ExpiresIn
            };

            return(JsonOK(result));
        }
예제 #13
0
        public ApiResponseModel Login(LoginViewModel loginViewModel)
        {
            ApiResponseModel apiResponseModel = new ApiResponseModel();

            if (!string.IsNullOrEmpty(loginViewModel.Email) && !string.IsNullOrEmpty(loginViewModel.Email))
            {
                var _user = _db.MstUsers.Where(x => x.Email.Equals(loginViewModel.Email)).FirstOrDefault();
                if (_user != null)
                {
                    if (_user.Password.Equals(loginViewModel.Password))
                    {
                        if (!_user.IsBlocked)
                        {
                            var _data = new LoginOutputModel {
                                IsAdmin = _user.IsAdmin, IsBlocked = _user.IsBlocked, FirstName = _user.FirstName, LastName = _user.FirstName, Email = _user.Email, Mobile = _user.Mobile, IsEmailVarified = _user.IsEmailVarified, IsMobileVarified = _user.IsMobileVerified, UserId = _user.UserId
                            };
                            var _userDetails = _db.MstUserDetails.Where(x => x.UserId == _user.UserId && x.IsActive).FirstOrDefault();
                            if (_userDetails != null)
                            {
                                _data.Photo = _userDetails.Photo;
                            }
                            apiResponseModel.Data    = _data;
                            apiResponseModel.Message = "true";
                        }
                        else
                        {
                            apiResponseModel.Message = "Your account is blocked";
                        }
                    }
                    else
                    {
                        apiResponseModel.Message = "Username/Password is invalid";
                    }
                }
                else
                {
                    apiResponseModel.Message = "Username/Password is invalid";
                }
            }
            return(apiResponseModel);
        }
예제 #14
0
 public void OnAuthentication(AuthenticationContext filterContext)
 {
     try
     {
         var routeValues          = new RouteValueDictionary();
         LoginOutputModel session = (LoginOutputModel)filterContext.HttpContext.Session[SystemParam.ADMIN];
         if (session == null || session.Id == 0)
         {
             //Chuyen ve trang dang nhap
             routeValues["controller"] = "FrontEnd/HomeFrontEnd";
             routeValues["action"]     = "Index";
             filterContext.Result      = new RedirectToRouteResult(routeValues);
         }
     }
     catch
     {
         var routeValues = new RouteValueDictionary();
         routeValues["controller"] = "FrontEnd/HomeFrontEnd";
         routeValues["action"]     = "Index";
         filterContext.Result      = new RedirectToRouteResult(routeValues);
     }
 }
예제 #15
0
 public JsonResult GetUserLogin()
 {
     try
     {
         if (Session[SystemParam.ADMIN] != null)
         {
             LoginOutputModel userLogin = (LoginOutputModel)Session[SystemParam.ADMIN];
             int?userID = loginBusiness.checkTokenUser(userLogin.Token);
             if (String.IsNullOrEmpty(userLogin.Token) || userID == 0)
             {
                 Session[SystemParam.ADMIN] = null;
                 userLogin.Role             = -1;
             }
             return(Json(userLogin, JsonRequestBehavior.AllowGet));
         }
         return(Json(new UserDetailOutputModel(), JsonRequestBehavior.AllowGet));
     }
     catch
     {
         return(Json(new UserDetailOutputModel(), JsonRequestBehavior.AllowGet));
     }
 }
        public async Task <IActionResult> Login(LoginModel credentials)
        {
            var result = await _signInManager.PasswordSignInAsync(credentials.Username, credentials.Password, false, false);

            if (result.Succeeded)
            {
                var user = await _userManager.FindByNameAsync(credentials.Username);

                string token = _tokenBuilder.Create()
                               .WithClaim(new Claim("id", user.Id))
                               .WithClaim(new Claim("username", user.UserName))
                               .Build();


                var output = new LoginOutputModel()
                {
                    Id = user.Id, Username = user.UserName, Token = token
                };

                return(Ok(output));
            }

            return(Unauthorized());
        }