/** * Get user with the given name. This method throws an exception if the user * does not exist. * * @param name the user name * @return the user * @throws DbException if the user does not exist */ public User getUser(String name) { User user = findUser(name); if (user == null) { throw DbException.get(ErrorCode.USER_NOT_FOUND_1, name); } return user; }
public void setGranteeName(String granteeName) { Database db = session.getDatabase(); grantee = db.findUser(granteeName); if (grantee == null) { grantee = db.findRole(granteeName); if (grantee == null) { throw DbException.get(ErrorCode.USER_OR_ROLE_NOT_FOUND_1, granteeName); } } }
@Override public int update() { session.getUser().checkAdmin(); Database db = session.getDatabase(); synchronized (db.getAuthLock()) { if (db.findUser(roleName) != null) { throw DbException.get(ErrorCode.USER_ALREADY_EXISTS_1, roleName); } if (db.findRole(roleName) != null) { if (ifNotExists) { return 0; } throw DbException.get(ErrorCode.ROLE_ALREADY_EXISTS_1, roleName); } int id = getObjectId(); Role role = new Role(db, id, roleName, false); db.addDatabaseObject(session, role); } return 0; }
@Override public int update() { session.getUser().checkAdmin(); Database db = session.getDatabase(); synchronized (db.getAuthLock()) { User user = db.findUser(userName); if (user == null) { if (!ifExists) { throw DbException.get(ErrorCode.USER_NOT_FOUND_1, userName); } } else { if (user == session.getUser()) { int adminUserCount = 0; for (User u : db.getAllUsers()) { if (u.isAdmin()) { adminUserCount++; } } // 运行到这里时当前用户必定是有Admin权限的,如果当前用户想删除它自己, // 同时系统中又没有其他Admin权限的用户了,那么不允许它删除自己 if (adminUserCount == 1) { throw DbException.get(ErrorCode.CANNOT_DROP_CURRENT_USER); } } user.checkOwnsNoSchemas(session); // 删除用户前需要删除它拥有的所有Schema,否则不允许删 db.removeDatabaseObject(session, user); } } return 0; }
case SQLStatement.ALTER_USER_RENAME: session.getUser().checkAdmin(); if (db.findUser(newName) != null || newName.equals(user.getName())) { throw DbException.get(ErrorCode.USER_ALREADY_EXISTS_1, newName);
@Override public int update() { session.getUser().checkAdmin(); Database db = session.getDatabase(); synchronized (db.getAuthLock()) { if (db.findRole(userName) != null) { throw DbException.get(ErrorCode.ROLE_ALREADY_EXISTS_1, userName); } if (db.findUser(userName) != null) { if (ifNotExists) { return 0; } throw DbException.get(ErrorCode.USER_ALREADY_EXISTS_1, userName); } int id = getObjectId(); User user = new User(db, id, userName, false); user.setAdmin(admin); user.setComment(comment); if (hash != null && salt != null) { setSaltAndHash(user, session, salt, hash); } else if (password != null) { setPassword(user, session, password); } else { throw DbException.throwInternalError(); } db.addDatabaseObject(session, user); } return 0; }
user = database.findUser(ci.getUserName()); if (user != null) { if (!user.validateUserPasswordHash(ci.getUserPasswordHash())) {