Example #1
0
        public async Task <LoginResponseModel> LoginAsync([FromBody] LoginModel model)
        {
            UserDbModel dbModel = await _userRepository.GetUserByUsername(model.Username);

            if (dbModel == null || !BCrypt.Net.BCrypt.Verify(model.Password, dbModel.Password))
            {
                return(new LoginResponseModel
                {
                    Success = false
                });
            }

            JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();

            byte[] key = Encoding.ASCII.GetBytes(JwtSecret);
            SecurityTokenDescriptor tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new[]
                {
                    new Claim("username", model.Username),
                    new Claim("name", dbModel.Name)
                }),
                Expires            = DateTime.UtcNow.AddDays(7),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key),
                                                            SecurityAlgorithms.HmacSha256Signature)
            };
            SecurityToken token = tokenHandler.CreateToken(tokenDescriptor);

            return(new LoginResponseModel
            {
                Success = true,
                Token = tokenHandler.WriteToken(token)
            });
        }
Example #2
0
        public void ChangeUserPassword(int id, string newPassword)
        {
            UserDbModel currentUser = _dbContext.FilmHubUsers.Find(id);

            currentUser.Password = newPassword;
            _dbContext.SaveChanges();
        }
Example #3
0
        public void EnsureUserExistsAsync_UserExists_ReturnedWithoutDbCall()
        {
            IDbContext dbContext = Substitute.For <IDbContext>();
            UserInfo   userInfo  = new UserInfo();

            userInfo.AuthId = Guid.NewGuid().ToString();
            userInfo.Name   = Guid.NewGuid().ToString();
            userInfo.Email  = Guid.NewGuid().ToString();

            UserDbModel userDbModel = new UserDbModel();

            userDbModel.Id     = Guid.NewGuid().ToString();
            userDbModel.AuthId = userInfo.AuthId;

            UserRepository userRepository = Substitute.For <UserRepository>();

            userRepository.GetByAuthIdAsync(dbContext, userInfo.AuthId).Returns(userDbModel);

            IMapper mapper = CreateMapper();

            CreateUserCommand createUserCommand = Substitute.For <CreateUserCommand>();

            UserViewService userViewService = new UserViewService(dbContext, mapper, userRepository, createUserCommand);
            UserViewModel   result          = userViewService.EnsureUserExistsAsync(userInfo).Result;

            Assert.AreEqual(userInfo.AuthId, result.AuthId);
            createUserCommand.DidNotReceive().ExecuteAsync(Arg.Any <IDbContext>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Wait();
        }
        public void GetUserWorkspaces_WorkspacesExist_CachesResult()
        {
            string     authUserId = Guid.NewGuid().ToString();
            string     cacheKey   = CacheKeys.UserWorkspace(authUserId);
            IDbContext dbContext  = Substitute.For <IDbContext>();
            IEnumerable <WorkspaceViewModel>?cachedViewModel = null;
            UserDbModel userDbModel = new UserDbModel();

            userDbModel.Workspaces = new string[1] {
                "workspace1"
            };

            WorkspaceDbModel[] workspaceDbModels = new WorkspaceDbModel[1] {
                new WorkspaceDbModel()
            };

            UserRepository userRepository = Substitute.For <UserRepository>();

            userRepository.GetByAuthIdAsync(dbContext, authUserId).Returns <UserDbModel>(userDbModel);

            WorkspaceRepository workspaceRepository = Substitute.For <WorkspaceRepository>();

            workspaceRepository.GetManyByIdAsync(dbContext, userDbModel.Workspaces).Returns(workspaceDbModels);

            IMemoryCacheWrapper memoryCache = Substitute.For <IMemoryCacheWrapper>();

            memoryCache.Get <IEnumerable <WorkspaceViewModel> >(cacheKey).Returns(cachedViewModel);

            UserWorkspaceViewService         userWorkspaceViewService = new UserWorkspaceViewService(dbContext, memoryCache, Substitute.For <IMapper>(), userRepository, workspaceRepository);
            IEnumerable <WorkspaceViewModel> result = userWorkspaceViewService.GetUserWorkspaces(authUserId).Result;

            // assert
            memoryCache.Received(1).Set <IEnumerable <WorkspaceViewModel> >(cacheKey, Arg.Any <IEnumerable <WorkspaceViewModel> >(), Arg.Any <TimeSpan>());
        }
Example #5
0
        public IActionResult UserPage(string Name)
        {
            ViewBag.Db = _db;
            UserDbModel user = _userManager.FindByNameAsync(Name).Result;

            return(View(user));
        }
Example #6
0
        public async Task <IActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                UserDbModel user = new UserDbModel {
                    UserName        = model.Name,
                    QueuesAsMember  = new List <int>(),
                    QueuesAsOuthor  = new List <int>(),
                    QueuesAsTeacher = new List <int>(),
                };
                // добавляем пользователя
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    // установка куки
                    await _signInManager.SignInAsync(user, false);

                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                }
            }
            return(View(model));
        }
Example #7
0
        public int ChangedPasswordIsCorrect(int id, string oldPassword, string newPassword, string newPasswordRepeat)
        {
            UserDbModel currentUser = _dbContext.FilmHubUsers.Find(id);

            for (int i = 0; i < newPassword.Length; i++)
            {
                if (Char.IsDigit(newPassword[i]))
                {
                    if (newPassword.Length >= 8)
                    {
                        if (newPassword == newPasswordRepeat)
                        {
                            if (newPassword != oldPassword)
                            {
                                if (currentUser.Password == oldPassword)
                                {
                                    return(1);
                                }
                            }
                            return(2);
                        }
                        return(3);
                    }
                    return(4);
                }
            }

            return(5);
        }
Example #8
0
        public UserDbModel Login(UserDbModel dbModel)
        {
            using (DesarrolloDocenteBDEntities db = new DesarrolloDocenteBDEntities())
            {
                var login = (from user in db.SEC_USER
                             where user.EMAIL.ToUpper().Equals(dbModel.Email.ToUpper()) && user.USER_PASSWORD.Equals(dbModel.Password)
                             select user).FirstOrDefault();

                if (login == null)
                {
                    return(null);
                }

                var         date    = dbModel.CurrentDate;
                SEC_SESSION session = new SEC_SESSION()
                {
                    USERID       = login.ID,
                    LOGIN_DATE   = date,
                    TOKEN_STATUS = true,
                    TOKEN        = this.GetToken(String.Concat(login.ID, date)),
                    IP_ADDRESS   = this.GetIpAddress()
                };

                db.SEC_SESSION.Add(session);
                db.SaveChanges();
                UserModelMapper mapper = new UserModelMapper();
                return(mapper.MapperT1T2(login));
            }
        }
Example #9
0
        public async Task <User> FindByIdAsync(int id)
        {
            UserDbModel userDbModel = await _userManager.FindByIdAsync(id.ToString());

            var user = Mapper.Map <UserDbModel, User>(userDbModel);

            IEnumerable <string> roleNames = await _userManager.GetRolesAsync(userDbModel);

            var rolesTasks = new List <Task <IdentityRole> >();

            foreach (string roleName in roleNames)
            {
                Task <IdentityRole> roleTask = _roleManager.FindByNameAsync(roleName);
                rolesTasks.Add(roleTask);
            }

            Task.WaitAll(rolesTasks.ToArray());

            foreach (Task <IdentityRole> roleTask in rolesTasks)
            {
                IdentityRole identityRole = roleTask.Result;
                var          role         = Mapper.Map <IdentityRole, Role>(identityRole);
                user.Roles.Add(role);
            }

            return(user);
        }
Example #10
0
        public void EnsureUserExistsAsync_UserDoesNotExist_ReturnedAfterCreation()
        {
            IDbContext dbContext = Substitute.For <IDbContext>();
            UserInfo   userInfo  = new UserInfo();

            userInfo.AuthId = Guid.NewGuid().ToString();
            userInfo.Name   = Guid.NewGuid().ToString();
            userInfo.Email  = Guid.NewGuid().ToString();

            UserDbModel userDbModel = new UserDbModel();

            userDbModel.Id     = Guid.NewGuid().ToString();
            userDbModel.AuthId = userInfo.AuthId;

            UserRepository userRepository = Substitute.For <UserRepository>();

            userRepository.GetByAuthIdAsync(dbContext, userInfo.AuthId).Returns <UserDbModel>(x => null);

            IMapper mapper = CreateMapper();

            CreateUserCommand createUserCommand = Substitute.For <CreateUserCommand>();

            createUserCommand.ExecuteAsync(dbContext, userInfo.AuthId, userInfo.Name, userInfo.Email).Returns(userDbModel);

            UserViewService userViewService = new UserViewService(dbContext, mapper, userRepository, createUserCommand);
            UserViewModel   result          = userViewService.EnsureUserExistsAsync(userInfo).Result;

            Assert.AreEqual(userInfo.AuthId, result.AuthId);
            createUserCommand.Received(1).ExecuteAsync(dbContext, userInfo.AuthId, userInfo.Name, userInfo.Email).Wait();
        }
Example #11
0
        /// <summary>
        /// Actualización de un registro
        /// </summary>
        /// <param name="dbModel"></param>
        /// <returns></returns>
        public int RecordUpdate(UserDbModel dbModel)
        {
            using (DesarrolloDocenteBDEntities db = new DesarrolloDocenteBDEntities())
            {
                try
                {
                    var record = db.SEC_USER.Where(x => x.ID == dbModel.Id).FirstOrDefault();
                    if (record == null)
                    {
                        return(3);
                    }

                    record.NAME           = dbModel.Name;
                    record.LASTNAME       = dbModel.Lastname;
                    record.CELLPHONE      = dbModel.Cellphone;
                    record.EMAIL          = dbModel.Email;
                    record.USER_PASSWORD  = dbModel.Password;
                    record.UPDATE_USER_ID = dbModel.UserInSessionId;
                    record.UPDATE_DATE    = dbModel.CurrentDate;

                    db.SaveChanges();
                    return(1);
                }
                catch
                {
                    return(2);
                }
            }
        }
Example #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="dbModel"></param>
        /// <returns></returns>
        public int RecordRemove(UserDbModel dbModel)
        {
            using (DesarrolloDocenteBDEntities db = new DesarrolloDocenteBDEntities())
            {
                try
                {
                    var record = db.SEC_USER.Where(x => x.ID == dbModel.Id).FirstOrDefault();
                    if (record == null)
                    {
                        return(3);
                    }
                    //db.SEC_ROLE.Remove(record);

                    record.REMOVED        = true;
                    record.REMOVE_DATE    = dbModel.CurrentDate;
                    record.REMOVE_USER_ID = dbModel.UserInSessionId;

                    db.SaveChanges();
                    return(1);
                }
                catch
                {
                    return(2);
                }
            };
        }
        private UserDbModel CreateTestUserDbModel(MongoDbContext dbContext, string containerName)
        {
            UserDbModel model = TestDbModelHelper.GetUserDbModel();

            dbContext.InsertAsync <UserDbModel>(containerName, model).Wait();
            return(model);
        }
Example #14
0
        /// <summary>
        /// Register user
        /// </summary>
        /// <param name="userDto"></param>
        /// <returns> Success/Failure result</returns>
        public async Task <bool> RegisterUser(CreateUserDto userDto)
        {
            if (userDto.Password != null)
            {
                userDto.Password = CommonHelper.EncodePasswordToBase64(userDto.Password);
            }

            UserDbModel userName = await _toDoDbContext.Users
                                   .Where(p => p.UserName.ToLower() == userDto.UserName.ToLower()).FirstOrDefaultAsync();

            if (userName != null)           //This will prevent addition of existing username again
            {
                return(false);
            }
            UserDbModel user = _mapper.Map <UserDbModel>(userDto);

            if (user.UserRole == null)
            {
                user.UserRole = "User";
            }
            _toDoDbContext.Users.Add(user);
            if (await _toDoDbContext.SaveChangesAsync() == 1)
            {
                return(true);
            }
            return(false);
        }
Example #15
0
        /// <inheritdoc />
        /// <summary>
        /// Register an user for given email, password and name
        /// </summary>
        /// <param name="code">Users university code id</param>
        /// <param name="email">Users email</param>
        /// <param name="passw">Users password</param>
        /// <param name="name">Users name</param>
        /// <param name="surname">Users surname</param>
        /// <param name="phone">Users phone number</param>
        /// <returns></returns>
        public async Task <JsonWebToken> RegisterAsync(int code, string email, string passw, string name, string surname,
                                                       string phone)
        {
            if (string.IsNullOrWhiteSpace(email))
            {
                throw new KarolinkaException(KarolinkaException.ExceptionType.EmptyEmail);
            }
            if (string.IsNullOrWhiteSpace(name))
            {
                throw new KarolinkaException(KarolinkaException.ExceptionType.EmptyName);
            }
            if (string.IsNullOrWhiteSpace(surname))
            {
                throw new KarolinkaException(KarolinkaException.ExceptionType.EmptySurname);
            }
            if (string.IsNullOrWhiteSpace(phone))
            {
                throw new KarolinkaException(KarolinkaException.ExceptionType.EmptyPhone);
            }
            if (string.IsNullOrWhiteSpace(passw))
            {
                throw new KarolinkaException(KarolinkaException.ExceptionType.EmptyPassword);
            }

            if (!email.IsValidEmail())
            {
                throw new KarolinkaException(KarolinkaException.ExceptionType.NotEmail);
            }
            if (!passw.IsValidPassword())
            {
                throw new KarolinkaException(KarolinkaException.ExceptionType.NotPassword);
            }

            var user = await _userRepository.GetAsync(email);

            if (user != null)
            {
                throw new KarolinkaException(KarolinkaException.ExceptionType.EmailAlreadyUsed);
            }

            var salt     = _encrypter.GetSalt();
            var password = _encrypter.GetHash(passw, salt);

            user = new UserDbModel(
                Guid.NewGuid(),
                code,
                email,
                name,
                surname,
                phone,
                password,
                salt,
                DateTime.UtcNow
                );

            await _userRepository.AddAsync(user);

            return(await LoginAsync(email, passw));
        }
Example #16
0
        public async Task <bool> RemoveUserFromRoleAsync(string id, string role)
        {
            UserDbModel user = await _userManager.FindByIdAsync(id);

            var result = await _userManager.RemoveFromRoleAsync(user, role);

            return(result.Succeeded);
        }
 private User GetUser(UserDbModel userDbModel)
 {
     return(new User
     {
         Name = userDbModel.Name,
         Conditions = userDbModel.Conditions
     });
 }
Example #18
0
        public async Task <bool> AddUserToRoleAsync(string name, string role)
        {
            UserDbModel user = await _userManager.FindByNameAsync(name);

            var result = await _userManager.AddToRoleAsync(user, role);

            return(result.Succeeded);
        }
    private IEnumerable <Claim> GetUserRoleClaims(UserDbModel user)
    {
        List <Claim> claims = new List <Claim>();

        claims.Add(new Claim(ClaimTypes.NameIdentifier, user.Id().ToString()));
        claims.Add(new Claim(ClaimTypes.Role, user.UserPermissionType.ToString()));
        return(claims);
    }
Example #20
0
        public async Task AddToRoleAsync(int id, string role)
        {
            UserDbModel user = await _userManager.FindByIdAsync(id.ToString());

            if (user != null)
            {
                await _userManager.AddToRoleAsync(user, role);
            }
        }
Example #21
0
        public async Task <bool> SoftDeleteAsync(string id)
        {
            UserDbModel model = await _userManager.FindByIdAsync(id);

            model.IsDeleted = true;
            var result = await _userManager.UpdateAsync(model);

            return(result.Succeeded);
        }
Example #22
0
        public async Task DeleteAsync(int id)
        {
            UserDbModel userDbModel = await _userManager.FindByIdAsync(id.ToString());

            if (userDbModel != null)
            {
                await _userManager.DeleteAsync(userDbModel);
            }
        }
Example #23
0
        internal static UserDbModel GetUserDbModel(string?authId = null, string?userName = null, string?email = null)
        {
            UserDbModel userDbModel = new UserDbModel();

            userDbModel.AuthId   = authId ?? Guid.NewGuid().ToString();
            userDbModel.UserName = userName ?? Guid.NewGuid().ToString();
            userDbModel.Email    = email ?? Guid.NewGuid().ToString();
            return(userDbModel);
        }
Example #24
0
 public static User FromDbModel(UserDbModel model)
 {
     return(new User
     {
         Id = model.Id,
         Password = model.Password,
         Login = model.Login
     });
 }
        public User GetUser(string name, string password)
        {
            UserDbModel userDbModel = _databaseService.GetUser(name);

            if (userDbModel == null || _cryptographyService.sha256(password) != userDbModel.HashedPassword)
            {
                return(null);
            }
            return(GetUser(userDbModel));
        }
    private IEnumerable <Claim> GetUserClaims(UserDbModel user)
    {
        List <Claim> claims = new List <Claim>();

        claims.Add(new Claim(ClaimTypes.NameIdentifier, user.Id().ToString()));
        claims.Add(new Claim(ClaimTypes.Name, user.UserFirstName));
        claims.Add(new Claim(ClaimTypes.Email, user.UserEmail));
        claims.AddRange(this.GetUserRoleClaims(user));
        return(claims);
    }
Example #27
0
        /// <summary>
        /// Get specific user.
        /// </summary>
        /// <param name="userId">userId</param>
        /// <returns>Returns UserDto</returns>
        public async Task <UserDto> GetById(long userId)
        {
            UserDbModel user = await _toDoDbContext.Users.Where(p => p.UserId == userId).SingleOrDefaultAsync();

            if (null == user)
            {
                return(null);
            }
            return(_mapper.Map <UserDto>(user));
        }
Example #28
0
        public bool IsExpert(int currentUserId)
        {
            UserDbModel currentUser = _dbContext.FilmHubUsers.Find(currentUserId);

            if (currentUser.IsExpert)
            {
                return(true);
            }
            return(false);
        }
Example #29
0
        public async Task <string> CreateAsync(UserDbModel model)
        {
            if (model.PasswordHash == null)
            {
                model.PasswordHash = ConstantsValue.DefaultPassword;
            }
            var result = await _userManager.CreateAsync(model, model.PasswordHash);

            return(model.Id);
        }
Example #30
0
        public void UserDelete(UserDbModel item)
        {
            var model = users.FirstOrDefault(i => i.Id == item.Id);

            if (model != null)
            {
                Entry(model).State = EntityState.Detached;
                Entry(item).State  = EntityState.Deleted;
            }
        }