private boolean checkSpecificUserConditions(final String login) { Preconditions.checkState(transactionManager.isTransactionActive(), "Tx user can't be changed outside of transaction"); final ODatabaseDocument db = connectionProvider.get(); final OSecurityUser original = db.getUser(); final boolean userChanged = !original.getName().equals(login); Preconditions.checkState(specificTxUser.get() == null || !userChanged, "Specific user already defined for transaction as '%s'", specificTxUser.get() == null ? null : specificTxUser.get().getName()); return userChanged; }
public String getUserName() throws SQLException { database.activateOnCurrentThread(); return database.getUser().getName(); }
final boolean userChanged = checkSpecificUserConditions(user.getName()); final ODatabaseDocumentInternal db = (ODatabaseDocumentInternal) connectionProvider.get(); final OSecurityUser original = db.getUser(); Throwables.throwIfUnchecked(th); throw new UserActionException(String.format("Failed to perform tx action with user '%s'", user.getName()), th); } finally { if (userChanged) {
@Override public void start(RequestCycle cycle) { OrientDbWebSession session = OrientDbWebSession.get(); ODatabaseDocumentInternal db = session.getDatabase(); //It's required to have ability to check security rights locally OSecurityUser oUser = session.getUser(); OSecurityUser dbUser = db.getUser(); if(oUser!=null && oUser.getDocument()!=null && oUser.getDocument().getIdentity()!=null && (!oUser.getDocument().getIdentity().isValid() || dbUser==null || !Objects.equal(dbUser.getName(), oUser.getName()))) { db.setUser(db.getMetadata().getSecurity().getUser(oUser.getName())); } db.begin(); }
@Override public void start(RequestCycle cycle) { OrientDbWebSession session = OrientDbWebSession.get(); ODatabaseDocumentInternal db = session.getDatabase(); //It's required to have ability to check security rights locally OSecurityUser oUser = session.getUser(); OSecurityUser dbUser = db.getUser(); if(oUser!=null && oUser.getDocument()!=null && oUser.getDocument().getIdentity()!=null && (!oUser.getDocument().getIdentity().isValid() || dbUser==null || !Objects.equal(dbUser.getName(), oUser.getName()))) { db.setUser(db.getMetadata().getSecurity().getUser(oUser.getName())); } db.begin(); }
result.setProperty("user", db.getUser() == null ? null : db.getUser().getName()); result.setProperty("type", String.valueOf(db.get(ODatabase.ATTRIBUTES.TYPE))); result.setProperty("status", String.valueOf(db.get(ODatabase.ATTRIBUTES.STATUS)));
public void release(final DB iDatabase) { // REMOVE ANY INTENT BEFORE. THIS RESTORE ANYTHING BEFORE THE CLOSE, LIKE THE USER NAME IN CASE OF MASSIVE INSERT iDatabase.declareIntent(null); final String dbPooledName = iDatabase.getUser().getName() + "@" + iDatabase.getURL(); final OReentrantResourcePool<String, DB> pool; lock(); try { pool = pools.get(dbPooledName); } finally { unlock(); } if (pool == null) throw new OLockException("Cannot release a database URL not acquired before. URL: " + iDatabase.getName()); if (pool.returnResource(iDatabase)) this.notifyEvictor(dbPooledName, iDatabase); }
public OrientBaseGraph(final OPartitionedDatabasePool pool) { this.pool = pool; database = pool.acquire(); makeActive(); putInInitializationStack(); this.username = getDatabase().getUser() != null ? getDatabase().getUser().getName() : null; readDatabaseConfiguration(); }
/** * Returns a copy of current database if it's open. The returned instance can be used by another thread without affecting current * instance. The database copy is not set in thread local. */ public ODatabaseDocumentInternal copy() { ODatabaseDocumentEmbedded database = new ODatabaseDocumentEmbedded(storage); database.init(config); String user; if (getUser() != null) { user = getUser().getName(); } else { user = null; } database.internalOpen(user, null, false); database.callOnOpenListeners(); this.activateOnCurrentThread(); return database; }
public OrientBaseGraph(final OPartitionedDatabasePool pool, final Settings iConfiguration) { this.pool = pool; database = pool.acquire(); makeActive(); putInInitializationStack(); this.username = getDatabase().getUser() != null ? getDatabase().getUser().getName() : null; readDatabaseConfiguration(); configure(iConfiguration); }
public void testDynamicPageForUnsigned() throws Exception { WicketOrientDbTester tester = wicket.getTester(); assertEquals(tester.getApplication().getOrientDbSettings().getGuestUserName(), tester.getDatabase().getUser().getName()); tester.startPage(DynamicSecuredPage.class); tester.assertRenderedPage(SignInPage.class); }
@Override public OLoggerEvent enhance(OLoggerEvent event) { RequestCycle cycle = RequestCycle.get(); if(cycle!=null) { OrienteerWebSession session = OrienteerWebSession.get(); if(session!=null) { if(session.isClientInfoAvailable()){ WebClientInfo clientInfo = session.getClientInfo(); event.setMetaData("remoteAddress", clientInfo.getProperties().getRemoteAddress()); event.setMetaData("hostName", clientInfo.getProperties().getHostname()); } if(session.isSignedIn()) { event.setMetaData("username", session.getUser().getName()); } } WebRequest request = (WebRequest)cycle.getRequest(); event.setMetaData("clientUrl", request.getClientUrl()); } return event; }
@Test public void testTestHomePage() throws Exception { WicketOrientDbTester tester = wicket.getTester(); assertEquals(tester.getApplication().getOrientDbSettings().getGuestUserName(), tester.getDatabase().getUser().getName()); tester.startPage(OrientDbTestPage.class); tester.assertRenderedPage(OrientDbTestPage.class); }
@Test public void testStaticPageForUnsigned() throws Exception { WicketOrientDbTester tester = wicket.getTester(); assertEquals(tester.getApplication().getOrientDbSettings().getGuestUserName(), tester.getDatabase().getUser().getName()); tester.startPage(StaticSecuredPage.class); tester.assertRenderedPage(SignInPage.class); }
@Test(expected=UnauthorizedInstantiationException.class) public void testStaticPageForSigned() { WicketOrientDbTester tester = wicket.getTester(); assertEquals(tester.getApplication().getOrientDbSettings().getGuestUserName(), tester.getDatabase().getUser().getName()); assertTrue(tester.signIn("reader", "reader")); tester.startPage(StaticSecuredPage.class); tester.signOut(); }
@Test public void testStaticPageForAdmin() { WicketOrientDbTester tester = wicket.getTester(); assertEquals(tester.getApplication().getOrientDbSettings().getGuestUserName(), tester.getDatabase().getUser().getName()); assertTrue(tester.signIn("admin", "admin")); tester.startPage(StaticSecuredPage.class); tester.assertRenderedPage(StaticSecuredPage.class); tester.signOut(); }
public void testDynamicPageForSigned() { WicketOrientDbTester tester = wicket.getTester(); assertEquals(tester.getApplication().getOrientDbSettings().getGuestUserName(), tester.getDatabase().getUser().getName()); assertTrue(tester.signIn("reader", "reader")); tester.startPage(DynamicSecuredPage.class); assertNull(tester.getLastRenderedPage()); //Due to retries in Wicket 8 we are not getting UnauthorizedInstantiationException tester.signOut(); }
@Test public void testDynamicPageForAdmin() { WicketOrientDbTester tester = wicket.getTester(); assertEquals(tester.getApplication().getOrientDbSettings().getGuestUserName(), tester.getDatabase().getUser().getName()); assertTrue(tester.signIn("admin", "admin")); tester.startPage(DynamicSecuredPage.class); tester.assertRenderedPage(DynamicSecuredPage.class); tester.signOut(); } }
public void testSession(String userRole, String user, String password) { IOrientDbSettings settings = wicket.getTester().getApplication().getOrientDbSettings(); WicketOrientDbTester tester = wicket.getTester(); //Check not signed in state assertFalse(tester.getSession().isSignedIn()); assertNull(tester.getSession().getUser()); assertNull(tester.getSession().getUsername()); assertEquals(settings.getGuestUserName(), tester.getDatabase().getUser().getName()); //Signin and check signed in state assertTrue(tester.signIn(user, password)); assertTrue(tester.isSignedIn()); assertEquals(user, tester.getDatabase().getUser().getName()); assertEquals(user, tester.getSession().getUser().getName()); assertTrue(tester.getSession().getRoles().hasRole(userRole)); //Signout and check signed out state tester.signOut(); assertFalse(tester.getSession().isSignedIn()); assertNull(tester.getSession().getUser()); assertNull(tester.getSession().getUsername()); assertEquals(settings.getGuestUserName(), tester.getDatabase().getUser().getName()); }
tester.signIn("writer", "writer"); assertTrue(tester.isSignedIn()); assertEquals("writer", tester.getSession().getUser().getName()); assertContains("writer", tester.getSession().getUserAsODocument().toJSON()); assertContains(tester.getSession().getUserAsODocument().toJSON(), getCurrentUser()); tester.signIn("admin", "admin"); assertTrue(tester.isSignedIn()); assertEquals("admin", tester.getSession().getUser().getName()); assertContains(tester.getSession().getUserAsODocument().toJSON(),getCurrentUser()); assertEquals("admin", tester.getSession().getUser().getName()); assertContains(tester.getSession().getUserAsODocument().toJSON(), currentUser);