about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2018-04-14 refactor(db): Store thread body in the posts tableVincent Ambo5-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 forumVincent Ambo2-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 viewVincent Ambo2-5/+32
2018-04-12 fix(handlers): Fix chained error handling in actorsVincent Ambo1-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 codeVincent Ambo1-8/+0
2018-04-11 fix(templates/handlers): Fix post anchorsVincent Ambo1-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 importsVincent Ambo2-3/+1
2018-04-11 feat(render): Use a more human-readable format for datesVincent Ambo1-5/+15
2018-04-11 fix(render): Escape thread titles in indexVincent Ambo1-1/+19
2018-04-11 feat(render): Implement Markdown thread rendering & GravatarVincent Ambo2-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 dependencyVincent Ambo1-0/+2
Required for Gravatar.
2018-04-11 fix(main): Correctly set up rendering actorVincent Ambo1-3/+7
2018-04-11 refactor(handlers): Use rendering actor for page rendersVincent Ambo1-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 actorVincent Ambo2-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-webVincent Ambo1-4/+3
2018-04-09 fix(db): Order index threads in descending post timeVincent Ambo1-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 templateVincent Ambo2-1/+10
2018-04-09 feat(handlers): Extract & add author to thread and post informationVincent Ambo3-6/+46
2018-04-09 feat(main): Initialise RequireLogin middleware on launchVincent Ambo1-4/+11
2018-04-09 feat(handlers): Add RequireLogin middlewareVincent Ambo2-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 keyVincent Ambo1-1/+10
2018-04-08 feat(handlers): Use cookie session backend to store author infoVincent Ambo3-12/+34
2018-04-08 feat(main): Configure & start OIDC actor when Converse launchesVincent Ambo1-5/+33
2018-04-08 feat(handler): Implement OIDC login & callback handlersVincent Ambo1-0/+23
2018-04-08 chore(models/schema): Update with author fieldsVincent Ambo2-0/+8
2018-04-08 feat(oidc): Implement initial OIDC actorVincent Ambo3-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 postsVincent Ambo2-2/+18
2018-04-08 feat(db/models): Add handling of CreatePost messageVincent Ambo2-2/+30
2018-04-08 feat(handlers): Add thread submission handlerVincent Ambo3-1/+17
2018-04-08 feat(db): Support CreateThread messageVincent Ambo2-0/+29
2018-04-08 refactor(db): Use ConverseError instead of unwrapping/expectingVincent Ambo1-10/+8
2018-04-08 feat(errors): Introduce error module with custom error typeVincent Ambo2-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 moduleVincent Ambo2-61/+79
2018-04-08 feat(main): Support CONVERSE_BIND_HOST environment variableVincent Ambo1-2/+5
2018-04-08 refactor(main): Use actix-web extractor patternVincent Ambo1-10/+12
2018-04-08 refactor(db): Establish Post->Thread associationVincent Ambo3-7/+13
This makes it possible to query posts by thread via Diesel.
2018-04-08 feat(main/templates): Add barebones single-thread viewVincent Ambo2-2/+28
2018-04-08 feat(db): Add initial GetThread messageVincent Ambo1-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 templatesVincent Ambo2-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 listingVincent Ambo1-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 messageVincent Ambo1-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 actorVincent Ambo1-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 exampleVincent Ambo2-2/+10
2018-04-08 feat(main): Bootstrap project entrypointVincent Ambo1-0/+26
This doesn't really do anything yet.
2018-04-08 feat(models/schema): Map up posts & threads tableVincent Ambo2-0/+40