ну и чтобы не костыльно было, про ограничения надо бы из БД читать, т.е. для пользователя взять массив его групп, взять из БД (b_group) для группы поле SECURITY_POLICY, десериализовать и прочитать оттуда BLOCK_LOGIN_ATTEMPTS и BLOCK_TIME и использовать для сравнения и предупреждения в кастомизированном шаблоне (см выше).
Не знаю, как формируется политика безопасности, если пользователь принадлежит нескольким группам с разными политиками, но это экспериментально легко выяснить. Думаю, что действует более слабая.