public async Task <IActionResult> DeleteRoleUser([FromBody] UserRoleViewModel body) { var user = await _userManager.FindByIdAsync(body.Id); if (user == null) { return(BadRequest(Errors.AddErrorToModelState("roles_errors", "Такого пользователя не существует", ModelState))); } if (!await _roleManager.RoleExistsAsync(body.Role)) { return(BadRequest(Errors.AddErrorToModelState("roles_errors", $"Роли: '{body.Role}' - не существует", ModelState))); } if (!await _userManager.IsInRoleAsync(user, body.Role)) { return(BadRequest(Errors.AddErrorToModelState("roles_errors", $"Пользователь: '{body.Id}' не имеет роли: {body.Role}", ModelState))); } var result = await _userManager.RemoveFromRoleAsync(user, body.Role); if (!result.Succeeded) { return(BadRequest(Errors.AddIdentityErrorsToModelState(result, ModelState))); } switch (body.Role) { case Constants.Jwt.JwtRoles.ApiAccessAdmin: var adminAccount = await _appDbContext.Admins.SingleOrDefaultAsync(x => x.IdentityId == body.Id); _appDbContext.Admins.Remove(adminAccount); break; case Constants.Jwt.JwtRoles.ApiAccessInstructor: var instructorAccount = await _appDbContext.Instructors.SingleOrDefaultAsync(x => x.IdentityId == body.Id); _appDbContext.Instructors.Remove(instructorAccount); break; case Constants.Jwt.JwtRoles.ApiAccessStudent: var studentAccount = await _appDbContext.Students.SingleOrDefaultAsync(x => x.ApiUserId == body.Id); _appDbContext.Students.Remove(studentAccount); break; } await _appDbContext.SaveChangesAsync(); return(Ok($"У пользователя: '{body.Id}' успешно удалена роль: '{body.Role}'")); }
public async Task <IActionResult> AddRoleUser([FromBody] UserRoleViewModel body) { var user = await _userManager.FindByIdAsync(body.Id); if (user == null) { return(BadRequest(Errors.AddErrorToModelState("roles_errors", "Такого пользователя не существует", ModelState))); } if (!await _roleManager.RoleExistsAsync(body.Role)) { return(BadRequest(Errors.AddErrorToModelState("roles_errors", $"Роли: '{body.Role}' - не существует", ModelState))); } if (await _userManager.IsInRoleAsync(user, body.Role)) { return(BadRequest(Errors.AddErrorToModelState("roles_errors", $"Пользователь: '{body.Id}' уже имеет эту роль: {body.Role}", ModelState))); } var result = await _userManager.AddToRoleAsync(user, body.Role); if (!result.Succeeded) { return(BadRequest(Errors.AddIdentityErrorsToModelState(result, ModelState))); } switch (body.Role) { case Constants.Jwt.JwtRoles.ApiAccessAdmin: await _appDbContext.Admins.AddAsync(new Admin { IdentityId = user.Id }); break; case Constants.Jwt.JwtRoles.ApiAccessInstructor: await _appDbContext.Instructors.AddAsync(new Instructor { IdentityId = user.Id }); break; case Constants.Jwt.JwtRoles.ApiAccessStudent: await _appDbContext.Students.AddAsync(new Student { ApiUserId = user.Id }); break; } await _appDbContext.SaveChangesAsync(); return(Ok($"Пользователь: '{body.Id}' получил роль: '{body.Role}'")); }
public async Task <IActionResult> Student([FromBody] RegistrationStudentViewModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var userIdentity = _mapper.Map <ApiUser>(model); var result = await _userManager.CreateAsync(userIdentity, model.Password); if (!result.Succeeded) { return(BadRequest(Errors.AddIdentityErrorsToModelState(result, ModelState))); } var group = await _context.Groups.SingleAsync(x => x.Number == model.Group); if (group == null) { return(BadRequest(Errors.AddErrorToModelState("group", "такой группы не существует", ModelState))); } await _userManager.AddToRoleAsync(userIdentity, Constants.Jwt.JwtRoles.ApiAccessStudent); await _context.Students.AddAsync(new Student { ApiUserId = userIdentity.Id }); await _context.SaveChangesAsync(); var student = await _context.Students.SingleAsync(x => x.ApiUserId == userIdentity.Id); await _context.StudentGroups.AddAsync(new StudentGroup { StudentId = student.Id, GroupId = group.Id, Gradebook = model.Gradebook }); await _context.SaveChangesAsync(); var code = await _userManager.GenerateEmailConfirmationTokenAsync(userIdentity); var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = userIdentity.Id, code }, protocol: HttpContext.Request.Scheme); await _emailSender.SendEmailConfirmationAsync(model.Email, callbackUrl); return(Ok($"Аккаунт {model.Email} успешно создан!")); }
public async Task <IActionResult> Create(string name) { if (string.IsNullOrEmpty(name)) { return(BadRequest(Errors.AddErrorToModelState("roles_errors", "Пустая строка", ModelState))); } if (await _roleManager.RoleExistsAsync(name)) { return(BadRequest(Errors.AddErrorToModelState("roles_errors", "Роль с таким именем уже существует", ModelState))); } var result = await _roleManager.CreateAsync(new IdentityRole(name)); if (!result.Succeeded) { return(BadRequest(Errors.AddIdentityErrorsToModelState(result, ModelState))); } return(Ok($"Роль {name} успешно созданна")); }