Commit graph

49 commits

Author SHA1 Message Date
Vincent Ambo
87237f5c28 feat(render): Implement Markdown thread rendering & Gravatar
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 13:25:12 +02:00
Vincent Ambo
405e6340f8 chore(cargo): Add md5 crate dependency
Required for Gravatar.
2018-04-11 13:24:32 +02:00
Vincent Ambo
18ba3eba3c fix(main): Correctly set up rendering actor 2018-04-11 12:19:10 +02:00
Vincent Ambo
1cce37446b refactor(handlers): Use rendering actor for page renders
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 12:18:33 +02:00
Vincent Ambo
fe7e5e48b5 feat(render): Add rendering actor
Adds a separate actor that handles page rendering, templating engine
state and other related topics.
2018-04-11 12:17:33 +02:00
Vincent Ambo
4eb0a57177 fix(main): Update cookie session setup for new actix-web 2018-04-10 09:53:58 +02:00
Vincent Ambo
f599f661ba chore(cargo): Dependency bump & pin versions 2018-04-10 09:53:38 +02:00
Vincent Ambo
97d77ffd07 fix(templates): Fix author name & avatar display 2018-04-09 23:48:31 +02:00
Vincent Ambo
c5833c02e2 fix(db): Order index threads in descending post time
Technically the last post date should matter more here, but we'll get
there.
2018-04-09 23:41:21 +02:00
Vincent Ambo
103a59485f feat(handlers/templates): Add "New Thread" handler and template 2018-04-09 23:37:41 +02:00
Vincent Ambo
fb7df7a346 feat(templates): Slightly less barebones index & thread templates 2018-04-09 23:37:21 +02:00
Vincent Ambo
7c73949066 feat(handlers): Extract & add author to thread and post information 2018-04-09 09:20:27 +02:00
Vincent Ambo
64453ec683 feat(main): Initialise RequireLogin middleware on launch 2018-04-09 09:11:25 +02:00
Vincent Ambo
ef5e8ec8bd feat(handlers): Add RequireLogin middleware
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 09:11:23 +02:00
Vincent Ambo
d91dec28f8 fix(main): Generate random session key 2018-04-09 09:10:36 +02:00
Vincent Ambo
c07c466219 docs(todo): Add TODO list 2018-04-08 22:57:24 +02:00
Vincent Ambo
9eb8501fae feat(handlers): Use cookie session backend to store author info 2018-04-08 22:56:29 +02:00
Vincent Ambo
e761b2d295 feat(templates): Display author information in templates 2018-04-08 22:38:06 +02:00
Vincent Ambo
1c4d436eae feat(main): Configure & start OIDC actor when Converse launches 2018-04-08 22:37:52 +02:00
Vincent Ambo
a63bc782b0 feat(handler): Implement OIDC login & callback handlers 2018-04-08 22:37:36 +02:00
Vincent Ambo
115f50ae37 chore(models/schema): Update with author fields 2018-04-08 22:37:21 +02:00
Vincent Ambo
249f17b60a feat(oidc): Implement initial OIDC actor
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 22:36:34 +02:00
Vincent Ambo
da33786939 feat(migrations): Add author columns to tables
Adds columns for author names and emails to both threads and posts.

"Users" don't (yet? who knows!) exist as independent entity in
Converse, they are simply "inferred" via OIDC providers.
2018-04-08 20:27:22 +02:00
Vincent Ambo
ef5f7af89c feat(templates): Add shitty little response form in thread view 2018-04-08 20:20:17 +02:00
Vincent Ambo
cf636077e6 feat(handlers): Add reply_thread handler for posts 2018-04-08 20:20:05 +02:00
Vincent Ambo
148dfc39c8 feat(db/models): Add handling of CreatePost message 2018-04-08 20:19:46 +02:00
Vincent Ambo
55b28f8136 feat(templates): Add a shitty thread submission form 2018-04-08 20:01:41 +02:00
Vincent Ambo
094b1e0722 feat(handlers): Add thread submission handler 2018-04-08 20:01:32 +02:00
Vincent Ambo
fc7ca2900d feat(db): Support CreateThread message 2018-04-08 19:41:28 +02:00
Vincent Ambo
f281749b8c feat(migrations): Default 'posted' columns to NOW() 2018-04-08 19:29:56 +02:00
Vincent Ambo
15d460bab3 refactor(db): Use ConverseError instead of unwrapping/expecting 2018-04-08 19:22:42 +02:00
Vincent Ambo
fdc1abe7cc feat(errors): Introduce error module with custom error type
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 19:21:56 +02:00
Vincent Ambo
c8cee945c5 refactor(main): Move handlers into separate handler module 2018-04-08 19:21:41 +02:00
Vincent Ambo
67a0642f8c feat(main): Support CONVERSE_BIND_HOST environment variable 2018-04-08 18:44:41 +02:00
Vincent Ambo
a1a6b77fdf refactor(main): Use actix-web extractor pattern 2018-04-08 18:42:01 +02:00
Vincent Ambo
316036b0a8 refactor(db): Establish Post->Thread association
This makes it possible to query posts by thread via Diesel.
2018-04-08 18:30:01 +02:00
Vincent Ambo
6e56f8e729 feat(main/templates): Add barebones single-thread view 2018-04-08 18:02:01 +02:00
Vincent Ambo
7dca9183c5 feat(db): Add initial GetThread message
Adds a GetThread message that returns a thread by ID. This does not
yet load posts.
2018-04-08 17:42:14 +02:00
Vincent Ambo
3db069c60d feat(main): Add support for Tera templates
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 17:30:03 +02:00
Vincent Ambo
b83dd99e30 chore(cargo): Add dependency on tera
Adds tera as the templating engine.
2018-04-08 17:14:38 +02:00
Vincent Ambo
1402cfd948 feat(main): Add barebares thread listing
This ties together the first components here (actix, diesel etc.) to
provide a _very_ simple thread overview.
2018-04-08 17:05:28 +02:00
Vincent Ambo
36e520a2b2 feat(db): Implement ListThreads message
Implements support for a message for listing threads. This does not
have any pagination support yet.
2018-04-08 17:04:45 +02:00
Vincent Ambo
bea6eb8eb3 feat(db): Bootstrap DbExecutor actor
Bootstraps an Actix actor carrying DB connections. This actor will be
used to interact with converse's database.
2018-04-08 16:41:34 +02:00
Vincent Ambo
5604d933e8 feat(main): Add minimal thread listing example 2018-04-08 16:08:26 +02:00
Vincent Ambo
f3f509d463 feat(main): Bootstrap project entrypoint
This doesn't really do anything yet.
2018-04-08 15:49:27 +02:00
Vincent Ambo
72691c8d63 feat(models/schema): Map up posts & threads table 2018-04-08 15:49:19 +02:00
Vincent Ambo
042eb88fd7 feat(migrations): Add posts & threads tables 2018-04-08 15:48:56 +02:00
Vincent Ambo
106ade6e41 chore: Add bootstrapped Cargo project 2018-04-08 15:48:49 +02:00
Vincent Ambo
2fd8fa2321 chore: Initial commit 2018-04-08 15:48:38 +02:00