コード例 #1
0
        public async Task <int> SaveAsync(BL.Role entity)
        {
            try
            {
                if (entity == null)
                {
                    return(0);
                }

                using (var context = _contextFactory.GetProductContext())
                {
                    var entityModel = await context
                                      .Roles
                                      .FirstOrDefaultAsync(item => item.Id.Equals(entity.Id));

                    if (entityModel == null)
                    {
                        entityModel = new DA.Role();
                        MapForUpdateEntity(entity, entityModel);
                        await context.Roles.AddAsync(entityModel);
                    }
                    else
                    {
                        MapForUpdateEntity(entity, entityModel);
                    }

                    context.SaveChanges();
                    return(entityModel.Id);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #2
0
        public async Task <IActionResult> LoginAdmin([FromBody] LoginModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var userList = await _userRepo.FindByAsync(u => u.Email == model.Email && u.Password == model.Password);

                    var user = userList.FirstOrDefault();
                    if (user != null)
                    {
                        int     roleId   = user.RoleId.HasValue ? (int)user.RoleId : 0;
                        BL.Role userRole = await _roleRepo.GetByIdAsync(roleId);

                        if (userRole.Name != "admin")
                        {
                            return(BadRequest($"{model.Email}, к сожалению вы не ADMIN. Войдите как ADMIN"));
                        }

                        await Authenticate(user); // аутентификация

                        return(Ok(user));
                    }

                    return(BadRequest($"Пользователь {model.Email} не найден или пароль неверный."));
                }

                return(BadRequest(ModelState));
            }
            catch (Exception ex)
            {
                return(BadRequest($"{ex.Message}"));
            }
        }
コード例 #3
0
        public async Task <IActionResult> Register([FromBody] RegisterModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var userList = await _userRepo.FindByAsync(u => u.Email == model.Email);

                    var user = userList.FirstOrDefault();
                    if (user == null)
                    {
                        var roleList = await _roleRepo.FindByAsync(r => r.Name == "user");

                        BL.Role userRole = roleList.FirstOrDefault();

                        // добавляем пользователя в бд
                        var newUserId = await _userRepo.SaveAsync(new BL.User {
                            Name     = model.Name,
                            Email    = model.Email,
                            Password = model.Password,
                            RoleId   = userRole?.Id,
                            Role     = userRole
                        });

                        // добавляем пользователя в бд
                        var newUser = await _userRepo.GetByIdAsync(newUserId);

                        await Authenticate(newUser); // аутентификация

                        return(Ok(newUser));
                    }

                    return(BadRequest($"Пользователь {model.Email} уже зарегистрирован."));
                }
                return(BadRequest(ModelState));
            }
            catch (Exception ex)
            {
                return(BadRequest($"{ex.Message}"));
            }
        }
コード例 #4
0
 private void MapForUpdateEntity(BL.Role entity, DA.Role daEntity)
 {
     daEntity.Id   = entity.Id;
     daEntity.Name = entity.Name;
 }