synchronized User createAdminUser(String userName, byte[] userPasswordHash) { User user = new User(this, allocateObjectId(), userName, false); user.setAdmin(true); user.setUserPasswordHash(userPasswordHash); lockMeta(systemSession); addDatabaseObject(systemSession, user); systemSession.commit(); return user; }
private void grantRight(DbObject object) { Database db = session.getDatabase(); Right right = grantee.getRightForObject(object); if (right == null) { int id = getObjectId(); right = new Right(db, id, grantee, rightMask, object); grantee.grantRight(object, right); db.addDatabaseObject(session, right); } else { right.setRightMask(right.getRightMask() | rightMask); db.updateMeta(session, right); } }
private void grantRole(Role grantedRole) { if (grantedRole != grantee && grantee.isRoleGranted(grantedRole)) { return; } if (grantee instanceof Role) { Role granteeRole = (Role) grantee; if (grantedRole.isRoleGranted(granteeRole)) { // cyclic role grants are not allowed throw DbException.get(ErrorCode.ROLE_ALREADY_GRANTED_1, grantedRole.getSQL()); } } Database db = session.getDatabase(); int id = getObjectId(); Right right = new Right(db, id, grantee, grantedRole); db.addDatabaseObject(session, right); grantee.grantRole(grantedRole, right); }
setting.setIntValue(Constants.BUILD_ID); lockMeta(systemSession); addDatabaseObject(systemSession, setting);
private void addOrUpdateSetting(ServerSession session, String name, String s, int v) { Database database = session.getDatabase(); if (database.isReadOnly()) { return; } Setting setting = database.findSetting(name); boolean addNew = false; if (setting == null) { addNew = true; int id = getObjectId(); setting = new Setting(database, id, name); } if (s != null) { if (!addNew && setting.getStringValue().equals(s)) { return; } setting.setStringValue(s); } else { if (!addNew && setting.getIntValue() == v) { return; } setting.setIntValue(v); } if (addNew) { database.addDatabaseObject(session, setting); } else { database.updateMeta(session, setting); } }
@Override public int update() { session.getUser().checkAdmin(); Database db = session.getDatabase(); synchronized (db.getLock(DbObjectType.AGGREGATE)) { if (db.findAggregate(name) != null || schema.findFunction(name) != null) { if (!ifNotExists) { throw DbException.get(ErrorCode.FUNCTION_ALIAS_ALREADY_EXISTS_1, name); } } else { int id = getObjectId(); UserAggregate aggregate = new UserAggregate(db, id, name, javaClassName, force); db.addDatabaseObject(session, aggregate); } } return 0; }
@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().checkSchemaAdmin(); Database db = session.getDatabase(); synchronized (db.getLock(DbObjectType.SCHEMA)) { User user = db.getUser(authorization); // during DB startup, the Right/Role records have not yet been loaded if (!db.isStarting()) { user.checkSchemaAdmin(); } if (db.findSchema(schemaName) != null) { if (ifNotExists) { return 0; } throw DbException.get(ErrorCode.SCHEMA_ALREADY_EXISTS_1, schemaName); } int id = getObjectId(); Schema schema = new Schema(db, id, schemaName, user, false); db.addDatabaseObject(session, schema); } return 0; }
@Override public int update() { session.getUser().checkAdmin(); Database db = session.getDatabase(); synchronized (db.getLock(DbObjectType.USER_DATATYPE)) { if (db.findUserDataType(typeName) != null) { if (ifNotExists) { return 0; } throw DbException.get(ErrorCode.USER_DATA_TYPE_ALREADY_EXISTS_1, typeName); } DataType builtIn = DataType.getTypeByName(typeName); if (builtIn != null) { if (!builtIn.hidden) { throw DbException.get(ErrorCode.USER_DATA_TYPE_ALREADY_EXISTS_1, typeName); } Table table = session.getDatabase().getFirstUserTable(); if (table != null) { throw DbException.get(ErrorCode.USER_DATA_TYPE_ALREADY_EXISTS_1, typeName + " (" + table.getSQL() + ")"); } } int id = getObjectId(); UserDataType type = new UserDataType(db, id, typeName); type.setColumn(column); db.addDatabaseObject(session, type); } return 0; }
@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; }
comment = new Comment(db, id, object); comment.setCommentText(text); db.addDatabaseObject(session, comment);