@Override
  public User.LoginAction login(User user) {
    DataBaseHelper helper = new DataBaseHelper(AppUtil.CONTEXT);
    SQLiteDatabase db = helper.getReadableDatabase();
    User.LoginAction loginAction = User.LoginAction.USER_DO_NOT_EXISTS;

    String where = UserContract.USER_NAME + " = ?";
    String[] args = {user.getUserName()};
    Cursor cursor =
        db.query(UserContract.TABLE, UserContract.COLUMNS, where, args, null, null, null);

    User dataBaseUser = UserContract.bind(cursor);

    db.close();
    helper.close();

    if (dataBaseUser != null) {
      String loginPassword =
          PasswordUtil.generatePasswordHash(user.getPassword(), dataBaseUser.getSalt());

      if (loginPassword.equals(dataBaseUser.getPassword())) {
        loginAction = User.LoginAction.SUCCESS;
        dataBaseUser.createLoginSession();
      } else loginAction = User.LoginAction.INVALID_PASSWORD;
    }

    return loginAction;
  }