Not a very deep dive into this... though, for the most part it should be somewhat abstracted away from your application's code.
Beyond this, the most glaring issue, is the assumption that a user may only have a single role, as opposed to possibly multiple roles.