vw_small

Hardened fork of Vaultwarden (https://github.com/dani-garcia/vaultwarden) with fewer features.
git clone https://git.philomathiclife.com/repos/vw_small
Log | Files | Refs | README

commit 00bc355220fb168bbf20970f4afca90540994f4f
parent 2b24b1760984adb91d2be7a7c731e3df2e5bf990
Author: Daniel GarcĂ­a <dani-garcia@users.noreply.github.com>
Date:   Sun, 23 Dec 2018 22:31:00 +0100

Merge pull request #308 from njfox/invite_existing_user_fix

Fix email invitations for existing users and update README
Diffstat:
MREADME.md | 11+++++++++++
Msrc/api/core/organizations.rs | 23++++++++++-------------
2 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/README.md b/README.md @@ -385,6 +385,17 @@ docker run -d --name bitwarden \ When `SMTP_SSL` is set to `true`(this is the default), only TLSv1.1 and TLSv1.2 protocols will be accepted and `SMTP_PORT` will default to `587`. If set to `false`, `SMTP_PORT` will default to `25` and the connection won't be encrypted. This can be very insecure, use this setting only if you know what you're doing. +Note that if SMTP and invitations are enabled, invitations will be sent to new users via email. You must set the `DOMAIN` configuration option with the base URL of your bitwarden_rs instance for the invite link to be generated correctly: + +```sh +docker run -d --name bitwarden \ +... +-e DOMAIN=https://vault.example.com +... +``` + +User invitation links are valid for 5 days, after which a new invitation will need to be sent. + ### Password hint display Usually, password hints are sent by email. But as bitwarden_rs is made with small or personal deployment in mind, hints are also available from the password hint page, so you don't have to configure an email service. If you want to disable this feature, you can use the `SHOW_PASSWORD_HINT` variable: diff --git a/src/api/core/organizations.rs b/src/api/core/organizations.rs @@ -532,20 +532,17 @@ fn accept_invite(_org_id: String, _org_user_id: String, data: JsonUpcase<AcceptD match User::find_by_mail(&claims.email, &conn) { Some(_) => { - if Invitation::take(&claims.email, &conn) { - if claims.user_org_id.is_some() { - // If this isn't the virtual_org, mark userorg as accepted - let mut user_org = match UserOrganization::find_by_uuid_and_org(&claims.user_org_id.unwrap(), &claims.org_id, &conn) { - Some(user_org) => user_org, - None => err!("Error accepting the invitation") - }; - user_org.status = UserOrgStatus::Accepted as i32; - if user_org.save(&conn).is_err() { - err!("Failed to accept user to organization") - } + Invitation::take(&claims.email, &conn); + if claims.user_org_id.is_some() { + // If this isn't the virtual_org, mark userorg as accepted + let mut user_org = match UserOrganization::find_by_uuid_and_org(&claims.user_org_id.unwrap(), &claims.org_id, &conn) { + Some(user_org) => user_org, + None => err!("Error accepting the invitation") + }; + user_org.status = UserOrgStatus::Accepted as i32; + if user_org.save(&conn).is_err() { + err!("Failed to accept user to organization") } - } else { - err!("Invitation for user not found") } }, None => {