Ejemplo n.º 1
0
        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}'"));
        }
Ejemplo n.º 2
0
        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}'"));
        }
Ejemplo n.º 3
0
        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} успешно создан!"));
        }
Ejemplo n.º 4
0
        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} успешно созданна"));
        }