Skip to content

Instantly share code, notes, and snippets.

View mattdrees's full-sized avatar

Matt Drees mattdrees

View GitHub Profile

Authorization Mini-Framework Proposal

The problems I want to solve here:

  • It should be really really easy for business code check whether the current user is able to something.
  • That "something" should be expressed in a type-safe way, where possible. It should also be expressed in a way that allows different levels of granularity, such that broadly-scoped permission rule can allow a user access to a very narrowly-scoped 'thing'.
  • The rules that explain who has permission to what should be able to be expressed in a way that is pretty readable.
@mattdrees
mattdrees / airbrake-loader.js
Last active January 2, 2016 15:09
a script to initialize Errbit reporting in staffweb. To be included via a `<script>` in `<head>`.
(function(callback) {
var ab = document.createElement('script');
ab.type = 'text/javascript'; ab.async = true;
ab.onload = ab.onreadystatechange = callback;
ab.src = "https://errors.uscm.org/javascripts/notifier.js";
var p = document.getElementsByTagName('script')[0];
p.parentNode.insertBefore(ab, p);
}(function () {
Airbrake.setHost('errors.uscm.org');
Airbrake.setKey('xxxxxxxxxxxxxxxxxxx');
@mattdrees
mattdrees / gist:512d62e3030d7ba6cfeb
Created October 28, 2015 17:24
three-level derived identity exception (against master -- 1bceb28394e1d4b34b65ea31333ca9b58e87cab3)
org.hibernate.testing.junit4.CallbackException: org.hibernate.testing.junit4.BaseNonConfigCoreFunctionalTestCase#startUp
at org.hibernate.testing.junit4.TestClassMetadata.performCallbackInvocation(TestClassMetadata.java:203)
at org.hibernate.testing.junit4.TestClassMetadata.invokeCallback(TestClassMetadata.java:187)
at org.hibernate.testing.junit4.TestClassMetadata.performCallbacks(TestClassMetadata.java:181)
at org.hibernate.testing.junit4.TestClassMetadata.performBeforeClassCallbacks(TestClassMetadata.java:172)
at org.hibernate.testing.junit4.BeforeClassCallbackHandler.evaluate(BeforeClassCallbackHandler.java:25)
at org.hibernate.testing.junit4.AfterClassCallbackHandler.evaluate(AfterClassCallbackHandler.java:25)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:105)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:56)
@mattdrees
mattdrees / gist:0725d3ab616c4d6fe9f8
Created October 28, 2015 17:57
three-level derived identity exception (against 5.0.3 -- 03b2e78136b171341f5a0b0c1f2d2e3c9ebae64f)
org.hibernate.testing.junit4.CallbackException: org.hibernate.testing.junit4.BaseNonConfigCoreFunctionalTestCase#startUp
at org.hibernate.testing.junit4.TestClassMetadata.performCallbackInvocation(TestClassMetadata.java:203)
at org.hibernate.testing.junit4.TestClassMetadata.invokeCallback(TestClassMetadata.java:187)
at org.hibernate.testing.junit4.TestClassMetadata.performCallbacks(TestClassMetadata.java:181)
at org.hibernate.testing.junit4.TestClassMetadata.performBeforeClassCallbacks(TestClassMetadata.java:172)
at org.hibernate.testing.junit4.BeforeClassCallbackHandler.evaluate(BeforeClassCallbackHandler.java:25)
at org.hibernate.testing.junit4.AfterClassCallbackHandler.evaluate(AfterClassCallbackHandler.java:25)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:105)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:56)
@mattdrees
mattdrees / gist:0eb3b9243fa50a4b381b
Created October 31, 2015 10:26
build output for hibernate failing test on revision 6b8c3024944154e246d040252593b9e3f1fe5776
mattdrees@Drees-MacBook-Pro:hibernate-core (5.0)$ pwd
/Users/mattdrees/Projects/hibernate-orm/hibernate-core
mattdrees@Drees-MacBook-Pro:hibernate-core (5.0)$ ../gradlew --version
------------------------------------------------------------
Gradle 2.7
------------------------------------------------------------
Build time: 2015-09-14 07:26:16 UTC
Build number: none
@mattdrees
mattdrees / gist:54674994e848e02a6584
Last active October 31, 2015 10:38
stacktrace of org.hibernate.property.GetAndIsVariantGetterTest.testAnnotations() failure for HHH-10242
org.hibernate.AnnotationException: No identifier specified for entity: org.hibernate.property.GetAndIsVariantGetterTest$TheEntity
at org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:231)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:710)
at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:245)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:222)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:265)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
at org.hibernate.boot.MetadataSources.buildMetada
@mattdrees
mattdrees / salesforce-cometd-traffic.debug.log
Created September 27, 2018 22:45
A salesforce platform events / cometd debug log snippet showing problem with jsforce ReplayExtension
message from Salesforce: { ext: { replay: true, 'payload.format': true },
minimumVersion: '1.0',
clientId: 'l0s1u9zof06ofqqkdkk92jldqgmk',
supportedConnectionTypes: [ 'long-polling' ],
channel: '/meta/handshake',
id: '1',
version: '1.0',
successful: true } +396ms
message to Salesforce: { channel: '/meta/connect',
clientId: 'l0s1u9zof06ofqqkdkk92jldqgmk',