attempt at fixing confirmation emails by setting email headers, link for manual confirmation email and cut next release #29

Merged
ben merged 8 commits from ben/Jobboerse:main into main 2022-06-10 15:36:51 +02:00
4 changed files with 26 additions and 6 deletions
Showing only changes of commit 28f5caa548 - Show all commits

add a link for manually sending a confirmation email

Bennet Bleßmann 2022-06-10 15:23:51 +02:00 committed by Bennet Bleßmann
Signed by: ben
GPG key ID: 3BE1A1A3CBC3CF99

View file

@ -455,7 +455,7 @@ impl JobOffer<PathBuf> {
.collect::<Result<_, PresentationError>>()?; .collect::<Result<_, PresentationError>>()?;
let actions = if !is_preview && is_authenticated { let actions = if !is_preview && is_authenticated {
Some(JobOfferActions::new(req, id)?) Some(JobOfferActions::new(req, id, self)?)
} else { } else {
None None
}; };

View file

@ -1,11 +1,15 @@
use crate::job_offers::{Attachment, JobOfferId, JobOfferStatus, Link}; use crate::job_offers::{
Attachment, ConfirmationStatus, JobOffer, JobOfferId, JobOfferStatus, Link,
};
use crate::route::{ use crate::route::{
JOBOFFER_DELETION_ROUTE, JOBOFFER_EDIT_ROUTE, JOBOFFER_PUBLISH_ROUTE, JOBOFFER_UNPUBLISH_ROUTE, JOBOFFER_CONFIRM_ROUTE, JOBOFFER_DELETION_ROUTE, JOBOFFER_EDIT_ROUTE, JOBOFFER_PUBLISH_ROUTE,
JOBOFFER_UNPUBLISH_ROUTE,
}; };
use actix_web::error::UrlGenerationError; use actix_web::error::UrlGenerationError;
use actix_web::HttpRequest; use actix_web::HttpRequest;
use chrono::FixedOffset; use chrono::FixedOffset;
use lettre::Address; use lettre::Address;
use std::path::PathBuf;
use url::Url; use url::Url;
#[derive(serde::Serialize)] #[derive(serde::Serialize)]
@ -50,12 +54,14 @@ pub struct JobOfferActions {
unpublish_url: Url, unpublish_url: Url,
delete_url: Url, delete_url: Url,
edit_url: Url, edit_url: Url,
confirmation_link: Option<Url>,
} }
impl JobOfferActions { impl JobOfferActions {
pub(super) fn new( pub(super) fn new(
req: &HttpRequest, req: &HttpRequest,
id: &JobOfferId, id: &JobOfferId,
offer: &JobOffer<PathBuf>,
) -> actix_web::Result<Self, UrlGenerationError> { ) -> actix_web::Result<Self, UrlGenerationError> {
let publish_url = req let publish_url = req
.url_for(JOBOFFER_PUBLISH_ROUTE, &[id]) .url_for(JOBOFFER_PUBLISH_ROUTE, &[id])
@ -73,11 +79,19 @@ impl JobOfferActions {
.url_for(JOBOFFER_EDIT_ROUTE, &[id]) .url_for(JOBOFFER_EDIT_ROUTE, &[id])
.expect("generation of delete route urls should succeed"); .expect("generation of delete route urls should succeed");
let confirmation_url = match &offer.status.confirmation_status {
ConfirmationStatus::AwaitingConfirmation { token } => {
Some(req.url_for(JOBOFFER_CONFIRM_ROUTE, [id, token])?)
}
ConfirmationStatus::Confirmed => None,
};
Ok(Self { Ok(Self {
publish_url, publish_url,
unpublish_url, unpublish_url,
delete_url, delete_url,
edit_url, edit_url,
confirmation_link: confirmation_url,
}) })
} }
} }

View file

@ -17,6 +17,7 @@ mod license;
pub(crate) use auth::{LOGIN_ROUTE, LOGOUT_ROUTE}; pub(crate) use auth::{LOGIN_ROUTE, LOGOUT_ROUTE};
pub(crate) use job_offer::{ pub(crate) use job_offer::{
confirmation::JOBOFFER_CONFIRM_ROUTE,
create::JOBOFFER_CREATION_ROUTE, create::JOBOFFER_CREATION_ROUTE,
delete::{JOBOFFER_BULK_DELETE_ROUTE, JOBOFFER_DELETE_EXPIRED_ROUTE, JOBOFFER_DELETION_ROUTE}, delete::{JOBOFFER_BULK_DELETE_ROUTE, JOBOFFER_DELETE_EXPIRED_ROUTE, JOBOFFER_DELETION_ROUTE},
edit::JOBOFFER_EDIT_ROUTE, edit::JOBOFFER_EDIT_ROUTE,

View file

@ -68,6 +68,10 @@
<div>ID: {{job_offer.id}}</div> <div>ID: {{job_offer.id}}</div>
<div>Review Status: <span class="{{#unless job_offer.reviewed}}unreviewed{{/unless}}">{{job_offer.status.review_status}}</span></div> <div>Review Status: <span class="{{#unless job_offer.reviewed}}unreviewed{{/unless}}">{{job_offer.status.review_status}}</span></div>
<div>Confirmation Status: <span class="{{#unless job_offer.confirmed}}unconfirmed{{/unless}}">{{job_offer.status.confirmation_status.type}}</span></div> <div>Confirmation Status: <span class="{{#unless job_offer.confirmed}}unconfirmed{{/unless}}">{{job_offer.status.confirmation_status.type}}</span></div>
{{log job_offer.actions}}
{{#if job_offer.actions.confirmation_link}}
<div><a href="mailto:{{job_offer.contact_data}}?body=Confirmation%20Link:%20{{job_offer.actions.confirmation_link}}" >Manual Confirmation Mail</a></div>
{{/if}}
{{/unless}} {{/unless}}
{{#if job_offer.actions }} {{#if job_offer.actions }}
@ -100,11 +104,12 @@
{{#*inline "formaction"}}{{job_offer.actions.delete_url}}{{/inline}} {{#*inline "formaction"}}{{job_offer.actions.delete_url}}{{/inline}}
{{/confirm-modal}} {{/confirm-modal}}
{{/if}} {{/if}}
{{/if}}
{{#if job_offer.actions.edit_url }} {{#if job_offer.actions.edit_url }}
<a href="{{job_offer.actions.edit_url}}">Bearbeiten</a> <a href="{{job_offer.actions.edit_url}}">Bearbeiten</a>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{/if}}
</div> </div>
</section> </section>