Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2018-04-14 | refactor(db): Store thread body in the posts table | Vincent Ambo | 5 | -23/+36 | |
This is a simplification over the previous approach. The OP of a thread is just a normal post like any other in this model, which allows some code simplifications (and future query convenience). | |||||
2018-04-12 | feat(handlers/main): Add 'anonymous' mode for forum | Vincent Ambo | 2 | -9/+27 | |
Adds a `REQUIRE_LOGIN` environment variable which, if set to anything other than true, will let users post anonymously on the forums. | |||||
2018-04-12 | feat(handler): Perform basic input validation on new thread view | Vincent Ambo | 2 | -5/+32 | |
2018-04-12 | fix(handlers): Fix chained error handling in actors | Vincent Ambo | 1 | -14/+15 | |
This took me some time to figure out so it's useful to document in the commit message. When chaining messages from actors, the result type of a message (i.e. the actual `<M as Message>::Result`) is sometimes itself a `Result<T, E>`. In many cases this leads to a situation where the return type of a message sending process is something like (simplified): Future<Item=Result<Foo, ConverseError>, Error=actix::MailboxError> Due to the implementation of `From<actix::MailboxError> for ConverseError` it is possible to use `.from_err()` on these futures to convert the future's `Error` to `ConverseError`. The type `Result` apparently implements `IntoFuture`, which means that due to some trait magic that's been applied somewhere in the futures API a call to `flatten()` can "lift" the contained error if the error types match and give us a "simple" Future<Item=Foo, Error=ConverseError> From that point on chaining becomes easy. | |||||
2018-04-11 | chore(handlers): Remove unused code | Vincent Ambo | 1 | -8/+0 | |
2018-04-11 | fix(templates/handlers): Fix post anchors | Vincent Ambo | 1 | -1/+1 | |
- ensure users are correctly linked to a post actor after replying - ensure timestamps are clickable to get post IDs | |||||
2018-04-11 | chore: Clean up unused imports | Vincent Ambo | 2 | -3/+1 | |
2018-04-11 | feat(render): Use a more human-readable format for dates | Vincent Ambo | 1 | -5/+15 | |
2018-04-11 | fix(render): Escape thread titles in index | Vincent Ambo | 1 | -1/+19 | |
2018-04-11 | feat(render): Implement Markdown thread rendering & Gravatar | Vincent Ambo | 2 | -10/+79 | |
Implements a new thread rendering pipeline which all posts and the main thread body are first converted to a `RenderablePost` structure. During the conversion to this structure, the post body is rendered as Markdown and the author's email address is converted into the format required by Gravatar. | |||||
2018-04-11 | chore(cargo): Add md5 crate dependency | Vincent Ambo | 1 | -0/+2 | |
Required for Gravatar. | |||||
2018-04-11 | fix(main): Correctly set up rendering actor | Vincent Ambo | 1 | -3/+7 | |
2018-04-11 | refactor(handlers): Use rendering actor for page renders | Vincent Ambo | 1 | -45/+27 | |
This currently breaks error handling in page render flows. To fix it properly, the database actor should return failable futures instead of `Result<T>` wrapped in a future. | |||||
2018-04-11 | feat(render): Add rendering actor | Vincent Ambo | 2 | -1/+72 | |
Adds a separate actor that handles page rendering, templating engine state and other related topics. | |||||
2018-04-10 | fix(main): Update cookie session setup for new actix-web | Vincent Ambo | 1 | -4/+3 | |
2018-04-09 | fix(db): Order index threads in descending post time | Vincent Ambo | 1 | -1/+3 | |
Technically the last post date should matter more here, but we'll get there. | |||||
2018-04-09 | feat(handlers/templates): Add "New Thread" handler and template | Vincent Ambo | 2 | -1/+10 | |
2018-04-09 | feat(handlers): Extract & add author to thread and post information | Vincent Ambo | 3 | -6/+46 | |
2018-04-09 | feat(main): Initialise RequireLogin middleware on launch | Vincent Ambo | 1 | -4/+11 | |
2018-04-09 | feat(handlers): Add RequireLogin middleware | Vincent Ambo | 2 | -4/+27 | |
Adds a middleware that automatically redirects users to the login page if they don't have an active session (i.e. 'author' set). | |||||
2018-04-09 | fix(main): Generate random session key | Vincent Ambo | 1 | -1/+10 | |
2018-04-08 | feat(handlers): Use cookie session backend to store author info | Vincent Ambo | 3 | -12/+34 | |
2018-04-08 | feat(main): Configure & start OIDC actor when Converse launches | Vincent Ambo | 1 | -5/+33 | |
2018-04-08 | feat(handler): Implement OIDC login & callback handlers | Vincent Ambo | 1 | -0/+23 | |
2018-04-08 | chore(models/schema): Update with author fields | Vincent Ambo | 2 | -0/+8 | |
2018-04-08 | feat(oidc): Implement initial OIDC actor | Vincent Ambo | 3 | -2/+152 | |
Implements an actor that can perform OAuth2 logins (not really OIDC-compliant yet because Rust doesn't have an easy to use JWT library that supports JWKS, and I don't have time for that right now). Currently this hardcodes some Office365-specific stuff. | |||||
2018-04-08 | feat(handlers): Add reply_thread handler for posts | Vincent Ambo | 2 | -2/+18 | |
2018-04-08 | feat(db/models): Add handling of CreatePost message | Vincent Ambo | 2 | -2/+30 | |
2018-04-08 | feat(handlers): Add thread submission handler | Vincent Ambo | 3 | -1/+17 | |
2018-04-08 | feat(db): Support CreateThread message | Vincent Ambo | 2 | -0/+29 | |
2018-04-08 | refactor(db): Use ConverseError instead of unwrapping/expecting | Vincent Ambo | 1 | -10/+8 | |
2018-04-08 | feat(errors): Introduce error module with custom error type | Vincent Ambo | 2 | -2/+81 | |
Introduces an error type using the failure crate. This type has foreign error links established to various errors that can occur within Converse. | |||||
2018-04-08 | refactor(main): Move handlers into separate handler module | Vincent Ambo | 2 | -61/+79 | |
2018-04-08 | feat(main): Support CONVERSE_BIND_HOST environment variable | Vincent Ambo | 1 | -2/+5 | |
2018-04-08 | refactor(main): Use actix-web extractor pattern | Vincent Ambo | 1 | -10/+12 | |
2018-04-08 | refactor(db): Establish Post->Thread association | Vincent Ambo | 3 | -7/+13 | |
This makes it possible to query posts by thread via Diesel. | |||||
2018-04-08 | feat(main/templates): Add barebones single-thread view | Vincent Ambo | 2 | -2/+28 | |
2018-04-08 | feat(db): Add initial GetThread message | Vincent Ambo | 1 | -0/+22 | |
Adds a GetThread message that returns a thread by ID. This does not yet load posts. | |||||
2018-04-08 | feat(main): Add support for Tera templates | Vincent Ambo | 2 | -15/+24 | |
Sets up the structure required to carry Tera templates in the actix-web state. The (still very barebones) index renderer has been updated to render a Tera template. | |||||
2018-04-08 | feat(main): Add barebares thread listing | Vincent Ambo | 1 | -16/+66 | |
This ties together the first components here (actix, diesel etc.) to provide a _very_ simple thread overview. | |||||
2018-04-08 | feat(db): Implement ListThreads message | Vincent Ambo | 1 | -1/+23 | |
Implements support for a message for listing threads. This does not have any pagination support yet. | |||||
2018-04-08 | feat(db): Bootstrap DbExecutor actor | Vincent Ambo | 1 | -0/+13 | |
Bootstraps an Actix actor carrying DB connections. This actor will be used to interact with converse's database. | |||||
2018-04-08 | feat(main): Add minimal thread listing example | Vincent Ambo | 2 | -2/+10 | |
2018-04-08 | feat(main): Bootstrap project entrypoint | Vincent Ambo | 1 | -0/+26 | |
This doesn't really do anything yet. | |||||
2018-04-08 | feat(models/schema): Map up posts & threads table | Vincent Ambo | 2 | -0/+40 | |