Merge pull request #3831 from BlackDex/fix-3819

Fix Login With Device without MasterPassword
pull/3910/head
Daniel García 1 year ago committed by GitHub
commit bbd630f1ee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,5 @@
ALTER TABLE auth_requests
MODIFY master_password_hash TEXT;
ALTER TABLE auth_requests
MODIFY enc_key TEXT;

@ -0,0 +1,5 @@
ALTER TABLE auth_requests
ALTER COLUMN master_password_hash DROP NOT NULL;
ALTER TABLE auth_requests
ALTER COLUMN enc_key DROP NOT NULL;

@ -0,0 +1,29 @@
-- Create new auth_requests table with master_password_hash as nullable column
CREATE TABLE auth_requests_new (
uuid TEXT NOT NULL PRIMARY KEY,
user_uuid TEXT NOT NULL,
organization_uuid TEXT,
request_device_identifier TEXT NOT NULL,
device_type INTEGER NOT NULL,
request_ip TEXT NOT NULL,
response_device_id TEXT,
access_code TEXT NOT NULL,
public_key TEXT NOT NULL,
enc_key TEXT,
master_password_hash TEXT,
approved BOOLEAN,
creation_date DATETIME NOT NULL,
response_date DATETIME,
authentication_date DATETIME,
FOREIGN KEY (user_uuid) REFERENCES users (uuid),
FOREIGN KEY (organization_uuid) REFERENCES organizations (uuid)
);
-- Transfer current data to new table
INSERT INTO auth_requests_new SELECT * FROM auth_requests;
-- Drop the old table
DROP TABLE auth_requests;
-- Rename the new table to the original name
ALTER TABLE auth_requests_new RENAME TO auth_requests;

@ -1090,7 +1090,7 @@ async fn get_auth_request(uuid: &str, mut conn: DbConn) -> JsonResult {
struct AuthResponseRequest { struct AuthResponseRequest {
deviceIdentifier: String, deviceIdentifier: String,
key: String, key: String,
masterPasswordHash: String, masterPasswordHash: Option<String>,
requestApproved: bool, requestApproved: bool,
} }
@ -1111,7 +1111,7 @@ async fn put_auth_request(
}; };
auth_request.approved = Some(data.requestApproved); auth_request.approved = Some(data.requestApproved);
auth_request.enc_key = data.key; auth_request.enc_key = Some(data.key);
auth_request.master_password_hash = data.masterPasswordHash; auth_request.master_password_hash = data.masterPasswordHash;
auth_request.response_device_id = Some(data.deviceIdentifier.clone()); auth_request.response_device_id = Some(data.deviceIdentifier.clone());
auth_request.save(&mut conn).await?; auth_request.save(&mut conn).await?;

@ -20,9 +20,9 @@ db_object! {
pub access_code: String, pub access_code: String,
pub public_key: String, pub public_key: String,
pub enc_key: String, pub enc_key: Option<String>,
pub master_password_hash: String, pub master_password_hash: Option<String>,
pub approved: Option<bool>, pub approved: Option<bool>,
pub creation_date: NaiveDateTime, pub creation_date: NaiveDateTime,
pub response_date: Option<NaiveDateTime>, pub response_date: Option<NaiveDateTime>,
@ -53,8 +53,8 @@ impl AuthRequest {
response_device_id: None, response_device_id: None,
access_code, access_code,
public_key, public_key,
enc_key: String::new(), enc_key: None,
master_password_hash: String::new(), master_password_hash: None,
approved: None, approved: None,
creation_date: now, creation_date: now,
response_date: None, response_date: None,

@ -297,8 +297,8 @@ table! {
response_device_id -> Nullable<Text>, response_device_id -> Nullable<Text>,
access_code -> Text, access_code -> Text,
public_key -> Text, public_key -> Text,
enc_key -> Text, enc_key -> Nullable<Text>,
master_password_hash -> Text, master_password_hash -> Nullable<Text>,
approved -> Nullable<Bool>, approved -> Nullable<Bool>,
creation_date -> Timestamp, creation_date -> Timestamp,
response_date -> Nullable<Timestamp>, response_date -> Nullable<Timestamp>,
@ -324,6 +324,7 @@ joinable!(users_collections -> collections (collection_uuid));
joinable!(users_collections -> users (user_uuid)); joinable!(users_collections -> users (user_uuid));
joinable!(users_organizations -> organizations (org_uuid)); joinable!(users_organizations -> organizations (org_uuid));
joinable!(users_organizations -> users (user_uuid)); joinable!(users_organizations -> users (user_uuid));
joinable!(users_organizations -> ciphers (org_uuid));
joinable!(organization_api_key -> organizations (org_uuid)); joinable!(organization_api_key -> organizations (org_uuid));
joinable!(emergency_access -> users (grantor_uuid)); joinable!(emergency_access -> users (grantor_uuid));
joinable!(groups -> organizations (organizations_uuid)); joinable!(groups -> organizations (organizations_uuid));

@ -297,8 +297,8 @@ table! {
response_device_id -> Nullable<Text>, response_device_id -> Nullable<Text>,
access_code -> Text, access_code -> Text,
public_key -> Text, public_key -> Text,
enc_key -> Text, enc_key -> Nullable<Text>,
master_password_hash -> Text, master_password_hash -> Nullable<Text>,
approved -> Nullable<Bool>, approved -> Nullable<Bool>,
creation_date -> Timestamp, creation_date -> Timestamp,
response_date -> Nullable<Timestamp>, response_date -> Nullable<Timestamp>,
@ -324,6 +324,7 @@ joinable!(users_collections -> collections (collection_uuid));
joinable!(users_collections -> users (user_uuid)); joinable!(users_collections -> users (user_uuid));
joinable!(users_organizations -> organizations (org_uuid)); joinable!(users_organizations -> organizations (org_uuid));
joinable!(users_organizations -> users (user_uuid)); joinable!(users_organizations -> users (user_uuid));
joinable!(users_organizations -> ciphers (org_uuid));
joinable!(organization_api_key -> organizations (org_uuid)); joinable!(organization_api_key -> organizations (org_uuid));
joinable!(emergency_access -> users (grantor_uuid)); joinable!(emergency_access -> users (grantor_uuid));
joinable!(groups -> organizations (organizations_uuid)); joinable!(groups -> organizations (organizations_uuid));

@ -297,8 +297,8 @@ table! {
response_device_id -> Nullable<Text>, response_device_id -> Nullable<Text>,
access_code -> Text, access_code -> Text,
public_key -> Text, public_key -> Text,
enc_key -> Text, enc_key -> Nullable<Text>,
master_password_hash -> Text, master_password_hash -> Nullable<Text>,
approved -> Nullable<Bool>, approved -> Nullable<Bool>,
creation_date -> Timestamp, creation_date -> Timestamp,
response_date -> Nullable<Timestamp>, response_date -> Nullable<Timestamp>,

Loading…
Cancel
Save