with role validation