Not convinced that the alternative (inlining the models) is any clearer.  I suspect that this would be better cleared up by restructuring allow_credentials/2.

I think this might be better done after the addition of a test suite.