Beispiel #1
0
        public bool SentLink(STUser stUser)
        {
            string msg = null;

            try
            {
                CUser  clUser = new CUser(stUser.userid, LocalData.CSDbUsers(), LocalData.LogPath());
                string key    = GenerateKey();
                int    ret    = clUser.SetKeyFPS(stUser.userid, key, out msg);
                if (ret != 0)
                {
                    return(false);
                }

                CMail clMail = new CMail(stUser.userid, LocalData.CSDbUsers(), LocalData.LogPath());

                STMail maildata = new STMail();
                maildata.to         = stUser.email;
                maildata.linkkey    = key;
                maildata.tamplate   = "MailToUserChangePassword.txt";
                maildata.fleetpwd   = null;
                maildata.pan        = null;
                maildata.dtcreate   = DateTime.Now.ToString("yyyyMMddHHmmss");
                maildata.dtmistsent = null;
                clMail.Insert(maildata, out msg);

                SMTPNotice smtp = new SMTPNotice(LocalData.SmtpHost(), LocalData.SmtpPort(), LocalData.SmtpUseSSL(),
                                                 LocalData.SmtpUserName(), LocalData.SmtpPassword(), LocalData.SmtpFrom(), LocalData.CSDbUsers(),
                                                 LocalData.LogPath(), LocalData.GetTemplatePath(), LocalData.Images());
                smtp.SendNotice(out msg);
            }
            catch (Exception ex) { msg = ex.Message; return(false); }

            return(true);
        }
        public async Task <ActionResult> Register(StudentRegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new STUser {
                    UserName = model.Email, Email = model.Email, RoleName = model.RoleName
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    result = await UserManager.AddToRoleAsync(user.Id, model.RoleName);

                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    return(RedirectToAction("StudentHome", "StudentHome", new { area = "StudentArea" }));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Beispiel #3
0
        public bool FPS(ActivateModel model)
        {
            if (string.IsNullOrEmpty(model.Key))
            {
                return(false);
            }

            string msg;
            CUser  clUser = new CUser(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());
            STUser dbuser = new STUser();

            int ret = clUser.GetRecordByUserKey(model.Key, out dbuser, out msg);

            if (ret != 0)
            {
                return(false);
            }
            else
            {
                string salt     = CreateSalt();
                string password = CreatePasswordHash(model.NewPassword, salt);
                if (clUser.FPS(dbuser.userid, password, salt, out msg) != 0)
                {
                    return(false);
                }
            }

            return(true);
        }
Beispiel #4
0
        public ActionResult Filter()
        {
            if (Request.IsAuthenticated)
            {
                STUserVP param;
                if (Session["USERPARAM"] != null)
                {
                    param = (STUserVP)Session["USERPARAM"];
                }
                else
                {
                    param = new STUserVP();
                }

                UserModelsViewParam prm = UserModelsRepository.Instance.SetParam(param);
                STUser user             = UserModelsRepository.Instance.GetLocalUser();
                if (user.permission == 0)
                {
                    ViewData["PM"] = "0";
                }
                return(View(prm));
            }
            else
            {
                return(RedirectToAction("Index", "Home"));
            }
        }
Beispiel #5
0
        public UserModels GetUserByLogin(string login)
        {
            UserModels  ret  = new UserModels();
            STUser      data = new STUser();
            string      msg;
            CCondition  clCondition  = new CCondition();
            CPermission clPermission = new CPermission();

            try
            {
                CUser clUser =
                    new CUser(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());
                int retvalue = clUser.GetRecordByUserLogin(login, out data, out msg);

                ret            = new UserModels();
                ret.UserId     = data.userid;
                ret.UserName   = data.username;
                ret.Login      = data.login;
                ret.Comments   = data.comments;
                ret.Condition  = clCondition.GetName(data.condition);
                ret.Permission = clPermission.GetName(data.permission);
                //     ret.Password = data.password;
                //     ret.ConfirmPassword = ret.Password;
                ret.Email         = data.email;
                ret.OwnerUserId   = data.owneruserid;
                ret.OwnerUserName = data.ownerusername;
            }
            catch (Exception ex) { msg = ex.Message; }
            return(ret);
        }
Beispiel #6
0
        //
        // GET: /User/Delete/5

        public ActionResult Delete(string id)
        {
            if (Request.IsAuthenticated)
            {
                UserModels UM   = UserModelsRepository.Instance.GetUser(id);
                STUser     user = UserModelsRepository.Instance.GetLocalUser();

                if (UM.OwnerUserId == user.userid)
                {
                    switch (UM.Condition)
                    {
                    case "Deleted":
                    {
                        ViewData["MSG"] = "The user is removed";
                        return(View("Permission"));
                    }
                    }
                    return(View(UM));
                }
                else
                {
                    ViewData["MSG"] = "You can't remove the user because he doesn't belong to you";
                    return(View("Permission"));
                }
            }
            else
            {
                return(RedirectToAction("Index", "Home"));
            }
        }
Beispiel #7
0
        //  public static STUserVP param;
        //
        // GET: /User/


        public ActionResult Index()
        {
            if (Request.IsAuthenticated)
            {
                STUser user = UserModelsRepository.Instance.GetLocalUser();
                if (!user.oldpass)
                {
                    if (user.permission != 2)
                    {
                        return(RedirectToAction("List"));
                    }
                    else
                    {
                        ViewData["MSG"] = "The user with the permission \"STANDART\" can't operate the list's users";
                        return(View("Permission1"));
                    }
                }
                else
                {
                    return(RedirectToAction("ChangePassword", "Account"));
                }
            }
            else
            {
                return(RedirectToAction("Index", "Home"));
            }
        }
Beispiel #8
0
        public static string UserId()
        {
            string msg;
            STUser rd     = new STUser();
            CUser  clUser = new CUser(null, ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString,
                                      ConfigurationManager.AppSettings["Logpath"]);

            clUser.GetRecordByUserLogin(HttpContext.Current.User.Identity.Name, out rd, out msg);
            return(rd.userid);
        }
Beispiel #9
0
        public STUser GetLocalUser()
        {
            STUser      ret = new STUser();
            string      msg;
            CCondition  clCondition  = new CCondition();
            CPermission clPermission = new CPermission();

            try
            {
                CUser clUser   = new CUser(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());
                int   retvalue = clUser.GetRecordByUserId(LocalData.UserId(), out ret, out msg);
            }
            catch (Exception ex) { msg = ex.Message; }
            return(ret);
        }
Beispiel #10
0
        //
        // GET: /User/Create

        public ActionResult Create()
        {
            if (Request.IsAuthenticated)
            {
                STUser user = UserModelsRepository.Instance.GetLocalUser();
                if (user.permission == 0)
                {
                    ViewData["PM"] = "0";
                }
                return(View(new UserModels()));
            }
            else
            {
                return(RedirectToAction("Index", "Home"));
            }
        }
Beispiel #11
0
        /*public bool ValidateUser(string login, string password)
         * {
         *  string msg;
         *  CUser clUser = new CUser(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());
         *  STUser dbuser = new STUser();
         *
         *  int ret = clUser.GetRecordByUserLogin(login, out dbuser, out msg);
         *
         *  if (ret != 0) return false;
         *  else
         *  {
         *      if (dbuser.password == CreatePasswordHash(password, dbuser.passwordsalt) && dbuser.isactivated == true)
         *      {
         *          clUser.Lock(dbuser.userid, 0, null, null, out msg);
         *          // скинем количество неверных попыток и доту временной блокировки и дату ввода не верной попытки
         *          return true;
         *      }
         *      else
         *      {
         *
         *          // необходимо проверить дату последней ошибочной попытки
         *          // если она+30 минут меньше текущей количество попыток устанавливаем 1 и записываем дату
         *          // если нет считаем попытку
         *          // если это не 3 пишем дату последней попытки и увеличиваем попытку
         *          // иначе скидываем дату и попытку и вносим дату блокировки
         *          if (dbuser.lastmisstime != null && dbuser.lastmisstime <= DateTime.Now.AddMinutes(-30))
         *          {
         *              clUser.Lock(dbuser.userid, 1, DateTime.Now, null, out msg);
         *          }
         *          else
         *          {
         *              if (dbuser.cntmisstry < 2)
         *                  clUser.Lock(dbuser.userid, dbuser.cntmisstry + 1, DateTime.Now, null, out msg);
         *              else clUser.Lock(dbuser.userid, 0, null, DateTime.Now.AddMinutes(30), out msg);
         *          }
         *          return false;
         *      }
         *  }
         * }*/

        public bool ValidateLogOnPassword(STUser dbuser, string password, out string msg)
        {
            msg = null;
            bool ret = true;

            try
            {
                CUser clUser = new CUser(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());

                if (dbuser.password == CreatePasswordHash(password, dbuser.passwordsalt) && dbuser.isactivated == true)
                {
                    clUser.Lock(dbuser.userid, 0, null, null, out msg);
                    // скинем количество неверных попыток и доту временной блокировки и дату ввода не верной попытки
                    return(true);
                }
                else
                {
                    // необходимо проверить дату последней ошибочной попытки
                    // если она+30 минут меньше текущей количество попыток устанавливаем 1 и записываем дату
                    // если нет считаем попытку
                    // если это не 3 пишем дату последней попытки и увеличиваем попытку
                    // иначе скидываем дату и попытку и вносим дату блокировки
                    if (dbuser.lastmisstime != null && dbuser.lastmisstime <= DateTime.Now.AddMinutes(-30))
                    {
                        clUser.Lock(dbuser.userid, 1, DateTime.Now, null, out msg);
                    }
                    else
                    {
                        if (dbuser.cntmisstry < 2)
                        {
                            clUser.Lock(dbuser.userid, dbuser.cntmisstry + 1, DateTime.Now, null, out msg);
                        }
                        else
                        {
                            clUser.Lock(dbuser.userid, 0, null, DateTime.Now.AddMinutes(30), out msg);
                        }
                    }
                    return(false);
                }
            }
            catch (Exception ex) { msg = ex.Message; ret = false; }
            return(ret);
        }
Beispiel #12
0
        public int UpdateUser(UserModels model, out string msg)
        {
            int ret = 0;

            msg = null;
            STUser      data         = new STUser();
            CCondition  clCondition  = new CCondition();
            CPermission clPermission = new CPermission();

            try
            {
                CUser clUser = new CUser(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());

                data.comments     = model.Comments;
                data.condition    = clCondition.GetId(model.Condition);
                data.email        = model.Email;
                data.login        = model.Login;
                data.modifieddate = DateTime.Now;
                data.passwordsalt = CreateSalt();
                //      data.password = CreatePasswordHash(model.Password, data.passwordsalt);
                data.permission = clPermission.GetId(model.Permission);
                data.username   = model.UserName;

                string[] arr = new[] { "'", "\"", "--" };
                if (CheckerField.CheckField(arr, data.comments, data.email, data.login, data.username))
                {
                    msg = "One or more fields contain invalid characters.";
                    return(2);
                }

                ret = clUser.Update(model.UserId, data, out msg);

                if (ret == 0)
                {
                    CAction clAction = new CAction(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());
                    clAction.AddAction(ActionType.EditUser, string.Format("Edit user {0}, {1}", data.username,
                                                                          data.login), out msg);
                }
            }
            catch (Exception ex) { msg = ex.Message; ret = -1; }

            return(ret);
        }
Beispiel #13
0
        // смена пароля в БД
        public bool ChangePassword(string login, string oldPassword, string newPassword)
        {
            STUser data = new STUser();
            string msg;
            CUser  clUser = new CUser(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());
            // находим юзера в БД по логину
            int ret = clUser.GetRecordByUserLogin(login, out data, out msg);

            if (ret != 0)
            {
                return(false);
            }

            // соль
            string passwordsalt = CreateSalt();
            // кодируем пароль
            string password = CreatePasswordHash(newPassword, passwordsalt);
            // дата действия пароля 6 месяцев
            DateTime passvaliddate = DateTime.Now.AddMonths(6);;

            // делаем изменения в БД
            int retvalue = clUser.UpdatePassword(data.userid, password, passwordsalt, passvaliddate, out msg);

            if (retvalue != 0)
            {
                return(false);
            }

            // добавляем пароль в кэш паорелей в БД
            STPassCache pc = new STPassCache();

            pc.password     = password;
            pc.passwordsalt = passwordsalt;
            clUser.AddPassToPassCache(login, pc, out msg);

            return(true);
        }
Beispiel #14
0
        /* public string GetUserNameByEmail(string email)
         * {
         *   string ret = null;
         *
         *   STUser stUser = new STUser();
         *   string msg = null;
         *   CUser clUser =
         *      new CUser(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());
         *   int retvalue = clUser.GetRecordByUserEmail(email, out stUser, out msg);
         *
         *   return stUser.userid;
         * }*/

        public MembershipUser GetUser(string username)
        {
            STUser data = new STUser();
            string msg;

            CUser clUser   = new CUser(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());
            int   retvalue = clUser.GetRecordByUserLogin(username, out data, out msg);

            string         _username                = data.login;
            int            _providerUserKey         = 0;
            string         _email                   = data.email;
            string         _passwordQuestion        = "";
            string         _comment                 = data.comments;
            bool           _isApproved              = data.isactivated;
            bool           _isLockedOut             = false;
            DateTime       _creationDate            = data.creationdate;
            DateTime       _lastLoginDate           = data.modifieddate;
            DateTime       _lastActivityDate        = DateTime.Now;
            DateTime       _lastPasswordChangedDate = DateTime.Now;
            DateTime       _lastLockedOutDate       = DateTime.Now;
            MembershipUser user = new MembershipUser("LocalMembershipProvider",
                                                     _username,
                                                     _providerUserKey,
                                                     _email,
                                                     _passwordQuestion,
                                                     _comment,
                                                     _isApproved,
                                                     _isLockedOut,
                                                     _creationDate,
                                                     _lastLoginDate,
                                                     _lastActivityDate,
                                                     _lastPasswordChangedDate,
                                                     _lastLockedOutDate);

            return(user);
        }
Beispiel #15
0
        public int AddUser(UserModels model, out string msg)
        {
            int    ret  = 0;
            STUser data = new STUser();

            msg = null;
            CCondition  clCondition  = new CCondition();
            CPermission clPermission = new CPermission();

            try
            {
                CUser clUser =
                    new CUser(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());

                ret = clUser.GetRecordByUserLogin(model.Login, out data, out msg);
                if (ret != 0)
                {
                    return(ret);
                }
                else
                {
                    if (data.login != null)
                    {
                        msg = "The login already exists in the database for the application.";
                        return(1);
                    }
                }

                data.comments      = model.Comments;
                data.activateddate = null;
                data.condition     = 0;
                data.creationdate  = DateTime.Now;
                data.email         = model.Email;
                data.isactivated   = false;
                data.login         = model.Login;
                data.modifieddate  = data.creationdate;
                data.owneruserid   = LocalData.UserId();
                //      data.passwordsalt = CreateSalt();
                //      data.password = CreatePasswordHash(model.Password, data.passwordsalt);
                data.permission    = clPermission.GetId(model.Permission);
                data.username      = model.UserName;
                data.passvaliddate = DateTime.Now.AddDays(-1);
                data.newemailkey   = GenerateKey();

                string[] arr = new[] { "'", "\"", "--" };
                if (CheckerField.CheckField(arr, data.comments, data.email, data.login, data.username))
                {
                    msg = "One or more fields contain invalid characters.";
                    return(2);
                }

                ret = clUser.Insert(data, out msg);

                if (ret == 0)
                {
                    CAction clAction = new CAction(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());
                    clAction.AddAction(ActionType.AddUser, string.Format("Add user {0}, {1}", data.username,
                                                                         data.login), out msg);

                    CMail clMail = new CMail(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());

                    STMail maildata = new STMail();
                    maildata.to         = data.email;
                    maildata.tamplate   = "MailToUserActivateAccount.txt";
                    maildata.linkkey    = data.newemailkey;
                    maildata.fleetpwd   = null;
                    maildata.pan        = null;
                    maildata.dtcreate   = DateTime.Now.ToString("yyyyMMddHHmmss");
                    maildata.dtmistsent = null;
                    maildata.login      = data.login;
                    clMail.Insert(maildata, out msg);

                    SMTPNotice smtp = new SMTPNotice(LocalData.SmtpHost(), LocalData.SmtpPort(), LocalData.SmtpUseSSL(),
                                                     LocalData.SmtpUserName(), LocalData.SmtpPassword(), LocalData.SmtpFrom(), LocalData.CSDbUsers(),
                                                     LocalData.LogPath(), LocalData.GetTemplatePath(), LocalData.Images());
                    smtp.SendNotice(out msg);
                }
            }
            catch (Exception ex) { msg = ex.Message; ret = -1; }
            return(ret);
        }