Требование таково: пользователь принадлежит к нескольким отделам, и роли в каждом отделе разные, и каждая роль имеет разные разрешения.
Общая идея заключается в том, что вам нужно построить еще один уровень отношений на таблица отношений. Интересно, есть ли другие варианты получше