Exemplo n.º 1
0
 public AccountController(NoticeProvider noticeProvider,
                          IClaimsIdentityProvider claimsIdentityProvider,
                          CaptchaStorageService captchaStorageService,
                          SendWelcomeEmailProvider sendWelcomeEmailProvider,
                          AppConfigProvider appConfigProvider)
 {
     Settings                 = new AccountSettings();
     ControllerHelper         = new AccountControllerHelper(Settings);
     NoticeProvider           = noticeProvider;
     ClaimsIdentityProvider   = claimsIdentityProvider;
     CaptchaStorageService    = captchaStorageService;
     SendWelcomeEmailProvider = sendWelcomeEmailProvider;
     AppConfigProvider        = appConfigProvider;
 }
Exemplo n.º 2
0
 public CheckoutAccountController(
     AccountControllerHelper accountControllerHelper,
     CaptchaStorageService captchaStorageService,
     ICheckoutAccountStatusProvider checkoutAccountStatusProvider,
     IClaimsIdentityProvider claimsIdentityProvider,
     NoticeProvider noticeProvider,
     IPersistedCheckoutContextProvider persistedCheckoutContextProvider,
     SendWelcomeEmailProvider sendWelcomeEmailProvider)
 {
     AccountControllerHelper       = accountControllerHelper;
     CaptchaStorageService         = captchaStorageService;
     CheckoutAccountStatusProvider = checkoutAccountStatusProvider;
     ClaimsIdentityProvider        = claimsIdentityProvider;
     NoticeProvider = noticeProvider;
     PersistedCheckoutContextProvider = persistedCheckoutContextProvider;
     SendWelcomeEmailProvider         = sendWelcomeEmailProvider;
 }
        public async Task <IActionResult> Registration([FromBody] Registration regInfo)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            User user = new User(regInfo.Email, regInfo.FullName);

            var result = await _userManager.CreateAsync(user, regInfo.Password);

            if (!result.Succeeded)
            {
                ModelState.AddModelError("Error", "Создание пользователя не удалось. Обратитесь в техподдержку.");
                return(BadRequest(ModelState));
            }
            string role = StandartIdentityDataConstants.USER_ROLE;
            await _userManager.AddToRoleAsync(user, role);

            var userFromDB = _userManager.Users.Single(u => u.UserName == regInfo.Email);
            var userToken  = AccountControllerHelper.GenerateJwtToken(userFromDB, role);

            //отбор роутов для данной роли
            var allRoutes = await AccountControllerHelper.GetRoutesForRole(role, _routeRepository);

            //получение пунктов меню для пользователя
            var menuElemsForRole = _menuRepository.GetMenuElementsForRole(role);

            var expireTime = Math.Round(DateTime.Now.ToUniversalTime().AddHours(AuthOptions.LIFETIME).Subtract(DateTime.MinValue.AddYears(1969)).TotalMilliseconds);

            return(Ok(
                       new
            {
                name = userFromDB.UserName,
                token = userToken.token,
                expireTimeToken = expireTime,
                role = new
                {
                    name = StandartIdentityDataConstants.USER_ROLE,
                    headerMenuElements = menuElemsForRole,
                    routes = allRoutes
                }
            }));
        }
 public AccountController(NoticeProvider noticeProvider,
                          IClaimsIdentityProvider claimsIdentityProvider,
                          SendWelcomeEmailProvider sendWelcomeEmailProvider,
                          AppConfigProvider appConfigProvider,
                          CartActionProvider cartActionProvider,
                          IDataRetentionService dataRetentionService,
                          IStringResourceProvider stringResourceProvider,
                          CaptchaVerificationProvider captchaVerificationProvider)
 {
     Settings                    = new AccountSettings();
     CaptchaSettings             = new CaptchaSettings();
     ControllerHelper            = new AccountControllerHelper(Settings);
     NoticeProvider              = noticeProvider;
     ClaimsIdentityProvider      = claimsIdentityProvider;
     SendWelcomeEmailProvider    = sendWelcomeEmailProvider;
     AppConfigProvider           = appConfigProvider;
     CartActionProvider          = cartActionProvider;
     DataRetentionService        = dataRetentionService;
     StringResourceProvider      = stringResourceProvider;
     CaptchaVerificationProvider = captchaVerificationProvider;
 }
 public CheckoutAccountController(
     AccountControllerHelper accountControllerHelper,
     AppConfigProvider appConfigProvider,
     ICheckoutAccountStatusProvider checkoutAccountStatusProvider,
     IClaimsIdentityProvider claimsIdentityProvider,
     NoticeProvider noticeProvider,
     IPersistedCheckoutContextProvider persistedCheckoutContextProvider,
     SendWelcomeEmailProvider sendWelcomeEmailProvider,
     CartActionProvider cartActionProvider,
     CaptchaVerificationProvider captchaVerificationProvider)
 {
     AccountControllerHelper       = accountControllerHelper;
     AppConfigProvider             = appConfigProvider;
     CheckoutAccountStatusProvider = checkoutAccountStatusProvider;
     ClaimsIdentityProvider        = claimsIdentityProvider;
     NoticeProvider = noticeProvider;
     PersistedCheckoutContextProvider = persistedCheckoutContextProvider;
     SendWelcomeEmailProvider         = sendWelcomeEmailProvider;
     CartActionProvider          = cartActionProvider;
     CaptchaVerificationProvider = captchaVerificationProvider;
     CaptchaSettings             = new CaptchaSettings();
 }
        public async Task <IActionResult> Login([FromBody] Login loginInfo, [FromServices] IAntiforgery antiforgery)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = _userManager.Users.SingleOrDefault(u => u.Email == loginInfo.Email);

            if (user == null)
            {
                ModelState.AddModelError("NotUser", "Данный пользователь не зарегистрирован");
                return(BadRequest(ModelState));
            }
            var result = await _signInManager.CheckPasswordSignInAsync(user, loginInfo.Password, false);

            if (!result.Succeeded)
            {
                ModelState.AddModelError("isNotLogged", "Неверный пароль");
                return(BadRequest(ModelState));
            }

            var role = await _userManager.GetRolesAsync(await _userManager.FindByEmailAsync(loginInfo.Email));

            if (role.Count != 1)
            {
                throw new Exception("Ошибка! Пользователь должен обладать одной ролью.");
            }
            ;

            var userToken = AccountControllerHelper.GenerateJwtToken(user, role[0]);

            /* var identity = new ClaimsIdentity(userToken.claims);
             * var principal = new ClaimsPrincipal(identity);
             * //привязывем пользователя к текущему контексту
             * HttpContext.User = principal;
             *
             * //устанавливаем куки на валидацию от CSRF атаки
             * var tokens = antiforgery.GetAndStoreTokens(HttpContext);
             *
             * HttpContext.Response.Cookies.Append("RequestVerificationToken", tokens.RequestToken,
             *  new CookieOptions()
             *  {
             *      HttpOnly = false
             *  });
             */
            //отбор роутов для данной роли
            var allRoutes = await AccountControllerHelper.GetRoutesForRole(role[0], _routeRepository);

            //получение пунктов меню для пользователя
            var menuElemsForRole = _menuRepository.GetMenuElementsForRole(role[0]);
            var expireTime       = Math.Round(DateTime.Now.ToUniversalTime().AddHours(AuthOptions.LIFETIME).Subtract(DateTime.MinValue.AddYears(1969)).TotalMilliseconds);

            return(Ok(
                       new
            {
                name = user.Email,
                token = userToken.token,
                expireTimeToken = expireTime,
                role = new
                {
                    name = role[0],
                    headerMenuElements = menuElemsForRole,
                    routes = allRoutes
                }
            }));
        }