예제 #1
0
 public ShareService()
 {
     _systemConfigRepository           = new SystemConfigRepository();
     _systemConfigDepartmentRepository = new SystemConfigDepartmentRepository();
     _departmentRepository             = new DepartmentRepository();
     _loginHistoryRepository           = new LoginHistoryRepository();
     _applicationLoggingRepository     = new ApplicationLoggingRepository();
     _userNotificationRepository       = new UserNotificationRepository();
     _notificationCenterRepository     = new NotificationCenterRepository();
 }
예제 #2
0
        public ActionResult Login(LoginModel model)
        {
            try
            {
                //LogHelper.Info("Login model: " + model.LoginID);
                if (string.IsNullOrEmpty(model.LoginID) || string.IsNullOrEmpty(model.Password))
                {
                    ViewBag.ErrorMessage = "Please input all field!!";
                    return(View(model));
                }

                var user = ValidateModel(model);
                if (user != null)
                {
                    //var listUser = new List<string> { "vn55160524", "vn55110755", "vn55104017", "vn55104937", "vd52170016", "vd52170006", "vd52170727", "se201701" };
                    //if (listUser.Contains(model.LoginID.ToLower()))
                    //{
                    var logHistoryRepo = new LoginHistoryRepository();
                    var logHistory     = new LogHistoryModel()
                    {
                        UserId    = model.LoginID,
                        PcBrowser = Request.Browser.Browser,
                        IpAddress = Util.IP2INT(GetIpAddress())
                    };
                    logHistoryRepo.InsertLog(logHistory);

                    var status = AppDictionary.UserStatus.FirstOrDefault(a => a.Value == user.Status.ToString()).Key;
                    if (status == "New" || status == "Reset")
                    {
                        ViewBag.Status = "ChangePassword";
                        return(View(model));
                    }
                    SetAuthorized(user, model.Remember);
                    if (Session["CurUrl"] != null)
                    {
                        return(Redirect(Session["CurUrl"].ToString()));
                    }
                    return(RedirectToAction("Index", "Home"));
                    //}
                    //ViewBag.ErrorMessage = "You dont have permission to login this system";
                }
                ViewBag.ErrorMessage = "Login ID & Password is incorrect!";
            }
            catch (Exception ex)
            {
                LogHelper.Error("AnonymousController: UserId: " + model.LoginID + " Exception: " + ex.InnerException.Message);
                return(null);
            }
            return(View(model));
        }
예제 #3
0
        public async Task <IHttpActionResult> CodeValidate([FromBody] LoginRequest AppRequest)
        {
            var    phone     = AppRequest.Phone.Trim();
            var    name      = AppRequest.Name.Trim();
            bool   codeMatch = false;
            string token     = String.Empty;

            IUserProfile profile = null;

            DTO.Contract.IUser user = new User();
            user.UserType          = UserType.BUYER;
            user.Name              = name;
            user.UserName          = phone;
            user.Password          = AppRequest.Password;
            user.PasswordValidated = false;

            try
            {
                using (AppDBContext context = new AppDBContext())
                {
                    //validate code
                    var pass = new UserPasscodeRepository(context).GetByPhone(phone);
                    if (pass == null)
                    {
                        return(Unauthorized());
                    }
                    else
                    {
                        if (pass.Code.Equals(user.Password))
                        {
                            codeMatch = true;
                        }
                        else
                        {
                            return(Unauthorized());
                        }
                    }

                    if (codeMatch)
                    {
                        var userRepo         = new UserRepository(context);
                        var loginHistoryRepo = new LoginHistoryRepository(context);
                        var curUser          = userRepo.GetByUserName(user.UserName);
                        user.PasswordValidated = true;
                        user.Name = pass.Name;

                        if (curUser != null)
                        {
                            if (!(curUser.IsActive ?? false))
                            {
                                return(Unauthorized());
                            }

                            if (curUser.LoginId != null)
                            {
                                await GetUserManager().ChangePasswordAsync(curUser.LoginId ?? 0, curUser.Password, pass.Code);
                            }

                            user.Id           = curUser.Id;
                            user.LoginId      = curUser.LoginId;
                            user.Password     = pass.Code;
                            user.ModifiedDate = DateTime.Now.ToUniversalTime();
                            user.IsActive     = true;
                            userRepo.Update(user);
                        }
                        else
                        {
                            var loginUser = new ApplicationUser()
                            {
                                UserName = user.UserName
                            };
                            IdentityResult result = await GetUserManager().CreateAsync(loginUser, pass.Code);

                            var loginCreated = GetUserManager().Find(user.UserName, pass.Code);

                            if (loginCreated == null)
                            {
                                return(null);
                            }

                            user.LoginId     = loginCreated.Id;
                            user.IsActive    = true;
                            user.CreatedDate = DateTime.Now.ToUniversalTime();
                            user.Id          = userRepo.Add(user);

                            if (!result.Succeeded)
                            {
                                return(InternalServerError());
                            }
                        }
                        loginHistoryRepo.Add(user.Id, AppRequest.ClientType);
                        profile = new UserProfileRepository(context).GetByUserId(user.Id);
                    }
                }

                token = await Utility.GetToken(user.UserName, user.Password);

                var model = new UserModel
                {
                    Id                = user.Id,
                    LoginId           = user.LoginId ?? 0,
                    UserType          = UserType.BUYER,
                    Name              = user.Name,
                    Password          = user.Password,
                    PasswordValidated = true,
                    Token             = token,
                    UserName          = user.UserName
                };
                if (profile != null)
                {
                    UserProfileModel userProfileModel = new UserProfileModel
                    {
                        Id            = profile.Id,
                        UserId        = profile.UserId,
                        FirstName     = profile.FirstName,
                        LastName      = profile.LastName,
                        Gender        = profile.Gender ?? 0,
                        Email         = profile.Email,
                        Phone         = profile.Email,
                        Mobile        = profile.Mobile,
                        Street        = profile.Street,
                        City          = profile.City,
                        Image         = profile.Image,
                        Location      = profile.Location,
                        ContactMethod = profile.ContactMethod ?? 0,
                        BankId        = profile.BankId,
                        BankBranch    = profile.BankBranch,
                        AccountName   = profile.AccountName,
                        AccountNo     = profile.AccountNo,
                        NotificationFrequencyMinutes = profile.NotificationFrequencyMinutes ?? 0
                    };
                    model.UserProfile = userProfileModel;
                }
                return(Ok(model));
            }
            catch (Exception ex)
            {
                Logger.Log(typeof(BuyerController), ex.Message + ex.StackTrace, LogType.ERROR);
                return(InternalServerError());
            }
        }