Almanna - Authorize users
using an Almanna entity. Requires additional config to work: * entity_type: mapping to the string representation of the GLib type of
the entity. Example: ExampleApp.Model.DB.User would be ExampleAppModelDBUser. Optional config: * password_type: Type of password
obfuscation/hashing in place. Defaults to a SHA1 PasswordType, but can be changed with password_type and that password type's
associated configuration. * id_field: Defaults to first primary key property or "id" * username_field: Defaults to username *
password_field: Defaults to password
IStorable - Interface for any class
implementing a session store. To use, subclass Object and then Storable, and implement store, retrieve, and set_config. While using
the provided config is optional, the method is required to be implemented so other Storables can use it.
AlmannaSession - Abstract session
to store Session data via an Almanna entity. Consumers of this abstract class need to have a table with a session_id integer field and
a session_data string field.
Interface - Represents session
functionality on top of a session storage engine.
SessionPlugin - Provides Session
support to an Ambition application.
StorableMemory - Implementation to
store sessions in memory in the dumbest way possible. This thing will keep growing and growing, and is designed as a basic example or
to test functionality without requiring an external dependency.
StorableFile - Implementation to store
sessions on the filesystem. Not the fastest thing in the world, but probably the easiest. Stores sessions in the system temporary
directory by default, or reads "storable.file.path" from the application config.
IUtility - Interface for defining a new
Ambition Shell plugin.
Run - Compile and run the current application.
TODO: Ideally, this should wrap the existing engine type and be able to proxy the application inside. That way, if an error occurs,
then the error can be output in dev mode, or captured and parsed in prod. This probably means that a compiled web application should
be a library that can be dynamically loaded by Utility. oof.