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; }
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 } })); }