def _make_user_model(self):
        """
        Dynamically generate a User class for use with FlaskKeystone.

        :returns: a generated User class, inherited from
                  :class:`flask_keystone.UserBase`.
        :rtype: class

        This User model is intended to work somewhat similarly to the User
        class that is created for Flask-Login, however it is Dynamically
        generated based on configuration values in `oslo.config.cfg`, and
        is populated automatically from the request headers added by
        :mod:`keystonemiddleware`.

        This User class has the concept of "roles", which are defined in
        oslo.config, and generates helper functions to quickly Determine
        whether these roles apply to a particular instance.
        """
        class User(UserBase):
            """
            A User as defined by the response from Keystone.

            Note: This class is dynamically generated by :class:`FlaskKeystone`
            from the :class:`flask_keystone.UserBase` class.

            :param request: The incoming `flask.Request` object, after being
                            handled by the :mod:`keystonemiddleware`
            :returns: :class:`flask_keystone.UserBase`
            """
            pass

        User.generate_has_role_function(self.roles)
        User.generate_is_role_functions(self.roles)

        return User