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 async Task EnsureUserRoleMenuElements() { var MenuForRoles = StandartIdentityDataConstants.MenuForRoles; foreach (var menu in MenuForRoles) { var role = await _roleManager.FindByNameAsync(menu.Role); var countElemsForRole = _menuElementRepository.GetMenuElementsForRole(role.Name).Count; if (countElemsForRole == 0 || countElemsForRole < menu.MenuElements.Count) { _menuElementRepository.ClearRelationsBetweenRoleAndMenuElems(role.Id); await _menuElementRepository.SetMenuElementsForRole(role.Id, menu.MenuElements); } } }