示例#1
0
        public ActionResult Register(RegisterModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            if (RemontinkaServer.Instance.DataStore.UserLoginExists(model.Login))
            {
                ModelState.AddModelError("Login", "Логин уже существует");
                return(View(model));
            }

            if (RemontinkaServer.Instance.DataStore.UserDomainEmailIsExists(model.Email))
            {
                ModelState.AddModelError("Email", "Такой email уже есть");
                return(View(model));
            }

            try
            {
                var registrationUnit = new RegistrationUnit
                {
                    ClientIdentifier = HttpContext.Request.UserHostName,
                    Email            = model.Email.ToLower(),
                    FirstName        = model.FirstName,
                    LastName         = model.LastName,
                    LegalName        = model.LegalName,
                    Login            = model.Login,
                    Password         = model.Password,
                    Trademark        = model.Trademark,
                    Address          = model.Address
                };
                var result = RemontinkaServer.Instance.SecurityService.Register(registrationUnit);

                if (!result.Success)
                {
                    ModelState.AddModelError(string.Empty, result.Description);
                    return(View(model));
                }
            }
            catch (Exception ex)
            {
                var inner = string.Empty;
                if (ex.InnerException != null)
                {
                    inner = ex.InnerException.Message;
                }
                _logger.ErrorFormat("Произошла ошибка во время регистрации пользователя {0} {1} {2} {3} {4}", model.Login, inner, ex.Message,
                                    ex.GetType(), ex.StackTrace);
                ModelState.AddModelError(string.Empty, "Произошла ошибка регистрации, повторите запрос чуть позже");
                return(View(model));
            }

            return(View("RegisterSuccess"));
        }
示例#2
0
        /// <summary>
        /// Регистрирует нового пользователя.
        /// </summary>
        /// <param name="unit">Юнит регистрации.</param>
        /// <returns>Результат регистрации.</returns>
        public RegistrationResult Register(RegistrationUnit unit)
        {
            _logger.InfoFormat("Начало регистрации пользователя {0}: {1}", unit.Login, unit.ClientIdentifier);
            var result = new RegistrationResult();

            try
            {
                var domain = new UserDomain();
                domain.IsActive       = false;
                domain.EventDate      = DateTime.UtcNow;
                domain.LegalName      = unit.LegalName;
                domain.PasswordHash   = BcryptHash(unit.Password);
                domain.RegistredEmail = unit.Email;
                domain.Trademark      = unit.Trademark;
                domain.Address        = unit.Address;
                domain.UserLogin      = unit.Login;

                RemontinkaServer.Instance.DataStore.SaveUserDomain(domain);
                _logger.InfoFormat("Завели новый домен с id {0} для пользователя {1}", domain.UserDomainID, unit.Login);

                var user = new User();
                user.Email         = unit.Email;
                user.FirstName     = unit.FirstName;
                user.LastName      = unit.LastName;
                user.LoginName     = unit.Login;
                user.PasswordHash  = string.Empty;
                user.MiddleName    = string.Empty;
                user.Phone         = string.Empty;
                user.ProjectRoleID = ProjectRoleSet.Admin.ProjectRoleID;
                user.UserDomainID  = domain.UserDomainID;

                try
                {
                    RemontinkaServer.Instance.DataStore.SaveUser(user);
                    result.Success = true;

                    var body = string.Format(RegistrationMessageBodyFormat, user.FirstName,
                                             string.Format(RegistrationActivateUrlFormat, domain.UserDomainID));
                    RemontinkaServer.Instance.MailingService.Send(unit.Email, RegistrationMessageTitleFormat, body);
                    _logger.InfoFormat("Пользователь успешно зарегистрирован {0}", unit.Login);
                }
                catch (Exception ex)
                {
                    result.Description = "Ошибка регистрации пользователя домена";
                    var innerException = string.Empty;

                    if (ex.InnerException != null)
                    {
                        innerException = ex.InnerException.Message;
                    }

                    _logger.ErrorFormat("Во время сохранения пользователя {0} для домена {1}, произошла ошибка, откатываем домен: {2}, {3} {4} {5}",
                                        unit.Login, domain.UserDomainID, ex.Message, innerException, ex.GetType(), ex.StackTrace);

                    RemontinkaServer.Instance.DataStore.DeleteUserDomain(domain.UserDomainID);
                }
            }
            catch (Exception ex)
            {
                result.Description = "Ошибка";
                var innerException = string.Empty;

                if (ex.InnerException != null)
                {
                    innerException = ex.InnerException.Message;
                }

                _logger.ErrorFormat("Во время регистрации пользователя {0}, произошла ошибка {1}, {2} {3} {4}",
                                    unit.Login, ex.Message, innerException, ex.GetType(), ex.StackTrace);
            }

            return(result);
        }