Refactor the Permission checking decorators

I was pretty confused at first about what this actually did. Is there a reason you wrote it as a decorator rather than a normal helper function?