BlackDex
978be0b4a9
Fixed foreign-key (mariadb) errors.
...
When using MariaDB v10.5+ Foreign-Key errors were popping up because of
some changes in that version. To mitigate this on MariaDB and other
MySQL forks those errors are now catched, and instead of a replace_into
an update will happen. I have tested this as thorough as possible with
MariaDB 10.5, 10.4, 10.3 and the default MySQL on Ubuntu Focal. And
tested it again using sqlite, all seems to be ok on all tables.
resolves #1081 . resolves #1065 , resolves #1050
2020-09-22 12:13:02 +02:00
Jeremy Lin
0eee907c88
Simplify implementation of UserOrgType::cmp()
...
Also move `UserOrgType::from_str()` closer to the definition of `UserOrgType`
since it references specific enum values.
2020-09-13 02:03:16 -07:00
Jeremy Lin
4c3b328aca
Hide ciphers from non-selected collections for org owners/admins
...
If org owners/admins set their org access to only include selected
collections, then ciphers from non-selected collections shouldn't
appear in "My Vault". This matches the upstream behavior.
2020-09-01 02:20:25 -07:00
Daniel García
aaba1e8368
Fix some clippy warnings and remove unused function
2020-08-28 22:10:28 +02:00
Jeremy Lin
175d647e47
Delete associated favorites when deleting a cipher or user
...
This prevents foreign key constraint violations.
2020-08-26 01:27:38 -07:00
Daniel García
0365b7c6a4
Add support for multiple simultaneous database features by using macros.
...
Diesel requires the following changes:
- Separate connection and pool types per connection, the generate_connections! macro generates an enum with a variant per db type
- Separate migrations and schemas, these were always imported as one type depending on db feature, now they are all imported under different module names
- Separate model objects per connection, the db_object! macro generates one object for each connection with the diesel macros, a generic object, and methods to convert between the connection-specific and the generic ones
- Separate connection queries, the db_run! macro allows writing only one that gets compiled for all databases or multiple ones
2020-08-24 20:11:17 +02:00
Jeremy Lin
f83a8a36d1
Track favorites on a per-user basis
...
Currently, favorites are tracked at the cipher level. For org-owned ciphers,
this means that if one user sets it as a favorite, it automatically becomes a
favorite for all other users that the cipher has been shared with.
2020-08-19 02:32:58 -07:00
Jeremy Lin
790146bfac
Fix error in PostgreSQL build
2020-07-10 17:23:02 -07:00
Jeremy Lin
f9a73a9bbe
More cipher optimization/cleanup
2020-07-03 10:49:10 -07:00
Jeremy Lin
35868dd72c
Optimize cipher queries
2020-07-03 09:00:33 -07:00
Jeremy Lin
979d010dc2
Add support for hiding passwords in a collection
...
Ref: https://github.com/bitwarden/server/pull/743
2020-07-02 21:51:20 -07:00
BlackDex
ac2723f898
Updated Organizations overview
...
- Changed HTML to match users overview
- Added User count
- Added Org cipher amount
- Added Attachment count and size
2020-06-03 20:37:31 +02:00
BlackDex
2fffaec226
Added attachment info per user and some layout fix
...
- Added the amount and size of the attachments per user
- Changed the items count function a bit
- Some small layout changes
2020-06-03 17:57:03 +02:00
BlackDex
3c66deb5cc
Redesign of the admin interface.
...
Main changes:
- Splitted up settings and users into two separate pages.
- Added verified shield when the e-mail address has been verified.
- Added the amount of personal items in the database to the users overview.
- Added Organizations and Diagnostics pages.
- Shows if DNS resolving works.
- Shows if there is a posible time drift.
- Shows current versions of server and web-vault.
- Optimized logo-gray.png using optipng
Items which can be added later:
- Amount of cipher items accessible for a user, not only his personal items.
- Amount of users per Org
- Version update check in the diagnostics overview.
- Copy/Pasteable runtime config which has sensitive data changed or removed for support questions either on the forum or github issues.
- Option to delete Orgs and all its passwords (when there are no members anymore).
- Etc....
2020-05-28 10:46:25 +02:00
Daniel García
aee1ea032b
Merge pull request #989 from theycallmesteve/update_responses
...
Update responses
2020-05-13 22:34:16 +02:00
theycallmesteve
08afc312c3
Add missing items to profileOrganization response model
2020-05-08 13:39:17 -04:00
theycallmesteve
6a8c65493f
Rename collection_user_details to collection_read_only to reflect the response model
2020-05-08 13:37:40 -04:00
theycallmesteve
dfdf4473ea
Rename to_json_list to to_json_provder to reflect the response model
2020-05-08 13:36:35 -04:00
theycallmesteve
632f4d5453
Whitespace fixes
2020-05-07 18:02:37 -04:00
Daniel García
9cca64003a
Remove unused dependency and simple feature, update dependencies and fix some clippy lints
2020-05-03 17:24:51 +02:00
Daniel García
e3b00b59a7
Initial support for soft deletes
2020-04-17 22:35:27 +02:00
BlackDex
1ee8e44912
Fixed issue #965
...
PostgreSQL updates/inserts ignored None/null values.
This is nice for new entries, but not for updates.
Added derive option to allways add these none/null values for Option<>
variables.
This solves issue #965
2020-04-15 16:49:33 +02:00
Daniel García
adf47827c9
Make sure the data field is always returned, otherwise the mobile apps seem to have issues
2020-03-30 22:19:50 +02:00
Daniel García
40c339db9b
Fix postgres policies, second try
2020-03-14 23:53:12 +01:00
Daniel García
819f340f39
Fix issue with postgres
2020-03-14 23:35:34 +01:00
Daniel García
3fa78e7bb1
Initial version of policies
2020-03-14 13:32:28 +01:00
Daniel García
325039c316
Attachment size limits, per-user and per-organization
2020-02-17 22:56:26 +01:00
Miro Prasil
03233429f4
Remove check from Invitation:take()
...
I've checked the spots when `Invitation::new()` and `Invitation::take()`
are used and it seems like all spots are already correctly gated. So to
enable invitations via admin API even when invitations are otherwise
disabled, this check can be removed.
2020-02-16 20:28:50 +00:00
Michael Powers
e196ba6e86
Switch error handling to ? operator instead of explicit handling.
2020-01-16 08:14:25 -05:00
Michael Powers
76743aee48
Fixes #635 - Unique constraint violation when using U2F tokens on PostgreSQL
...
Because of differences in how .on_conflict() works compared to .replace_into() the PostgreSQL backend wasn't correctly ensuring the unique constraint on user_uuid and atype wasn't getting violated.
This change simply issues a DELETE on the unique constraint prior to the insert to ensure uniqueness. PostgreSQL does not support multiple constraints in ON CONFLICT clauses.
2020-01-13 21:53:57 -05:00
tomuta
bd1e8be328
Implement change-email, email-verification, account-recovery, and welcome notifications
2019-11-24 22:28:49 -07:00
BlackDex
ebf40099f2
Updated authenticator TOTP
...
- Added security check for previouse used codes
- Allow TOTP codes with 1 step back and forward when there is a time
drift. This means in total 3 codes could be valid. But only newer codes
then the previouse used codes are excepted after that.
2019-10-10 17:32:20 +02:00
Daniel García
4c07f05b3a
Remove Result<T, E: Debug> in preparation of deprecation as Rocket responder.
...
Removed unnecessary returns
2019-09-17 21:05:56 +02:00
Michael Powers
f5f9861a78
Adds support for PostgreSQL which resolves #87 and is mentioned in #246 .
...
This includes migrations as well as Dockerfile's for amd64.
The biggest change is that replace_into isn't supported by Diesel for the
PostgreSQL backend, instead requiring the use of on_conflict. This
unfortunately requires a branch for save() on all of the models currently
using replace_into.
2019-09-12 16:12:22 -04:00
Daniel García
df8114f8be
Updated client kdf iterations to 100000 and fixed some lints
2019-09-05 21:56:12 +02:00
vpl
6d460b44b0
Use saved token for email 2fa codes
2019-08-04 17:21:57 +02:00
vpl
29aedd388e
Add email code logic and move two_factor into separate modules
2019-08-04 16:56:41 +02:00
Daniel García
76f38621de
Update dependencies and remove unwraps from Cipher::to_json
2019-06-14 22:51:50 +02:00
Emil Madsen
e22e290f67
Fix key and type variable names for mysql
2019-05-20 21:24:29 +02:00
Emil Madsen
ab95a69dc8
Rework migrations for MySQL
2019-05-20 21:12:41 +02:00
Daniel García
bf20355c5e
Merge branch 'duo'
2019-04-14 22:02:55 +02:00
Daniel García
0136c793b4
Implement better user status API, in the future we'll probably want a way to disable users.
...
We should migrate from the empty password hash to a separate column then.
2019-04-13 00:01:52 +02:00
Daniel García
621f607297
Update dependencies and fix some warnings
2019-04-11 15:40:19 +02:00
Daniel García
43f9038325
Add option to force resync clients in admin panel
2019-03-07 21:08:33 +01:00
Daniel García
7d2bc9e162
Added option to force 2fa at logins and made some changes to two factor code.
...
Added newlines to config options to keep them a reasonable length.
2019-03-03 16:09:15 +01:00
Дамјан Георгиевски
473f8b8e31
remove some unneeded mutability
2019-02-22 20:25:50 +01:00
Daniel García
9636f33fdb
Implement constant time equal check for admin, 2fa recover and 2fa remember tokens
2019-02-11 23:45:55 +01:00
Daniel García
8b4a6f2a64
Fixed some clippy lints and changed update_uuid_revision to only use one db query
2019-02-08 18:45:07 +01:00
Miroslav Prasil
08ca47cadb
Update revision when adding or removing cipher from collection
2019-02-06 14:47:47 +00:00
Miroslav Prasil
5272b465cc
Update revision of affected users when deleting Collection
2019-02-06 13:39:32 +00:00
Miroslav Prasil
bce656c787
Retry updating revision - fixes #383
2019-02-05 11:52:11 +00:00
Daniel García
bef1183c49
Only send one notification per vault import and purge, improve move ciphers functions
2019-01-28 00:39:14 +01:00
Daniel García
69036cc6a4
Add disabled user badge (no password) and deauthorize button to admin page.
2019-01-26 19:28:54 +01:00
Daniel García
700e084101
Add 2FA icon to admin panel
2019-01-25 18:50:57 +01:00
Daniel García
a1dc47b826
Change config to thread-safe system, needed for a future config panel.
...
Improved some two factor methods.
2019-01-25 18:24:57 +01:00
Daniel García
86de0ca17b
Fix editing users from collections menu
2019-01-25 17:43:51 +01:00
Stephen White
fc0e239bdf
No point calling find_by_uuid now we don't use the result.
2019-01-25 14:25:15 +00:00
Stephen White
928ad6c1d8
Fix the list of users with access to a collection to display correctly.
...
https://github.com/dani-garcia/bitwarden_rs/issues/364
2019-01-25 14:18:06 +00:00
Daniel García
ddd49596ba
Fix invite empty email
2019-01-22 17:26:17 +01:00
Daniel García
834c847746
Implement admin JWT cookie, separate JWT issuers for each type of token and migrate admin page to handlebars template
2019-01-19 21:41:49 +01:00
Daniel García
6f52104324
Fix casing error in Attachment, should fix 'Attachment doesn't exist' errors
2019-01-11 01:35:15 +01:00
Daniel García
30e768613b
Start using rustfmt and some style changes to make some lines shorter
2018-12-30 23:34:31 +01:00
Daniel García
acb9d1b3c6
Remove config option for admin email, embdedded admin page, managed IO::Error, and added security and cache headers globally
2018-12-30 21:43:56 +01:00
Daniel García
b2fc0499f6
Finish invite functionality, and remove virtual organization
2018-12-30 21:40:26 +01:00
Daniel García
6a99849a1e
Implemented proper error handling, now we can do user.save($conn)?;
and it works.
...
In the future, maybe we can do the same with the `find_by_id` methods that return an Option.
2018-12-30 21:31:12 +01:00
Daniel García
1b5134dfe2
Fixed delete user when 2FA is enabled, implemented delete user for admin panel, and the front-end part for invite user. Secured admin panel behind a configurable token.
2018-12-30 21:31:11 +01:00
Daniel García
004a3f891f
Merge pull request #315 from aksdb/master
...
Restrict join on users_collections to current user (fixes #313 )
2018-12-28 21:06:30 +01:00
Andreas Schneider
e7ea5097f4
Restrict join on users_collections to current user ( fixes #313 )
2018-12-28 15:25:51 +01:00
Miroslav Prasil
8451a70de6
Rewrite find_by_user_uuid to use one query
2018-12-27 18:56:01 +01:00
Daniel García
4e827e4f8a
Implement better retry and use it while saving device
2018-12-12 22:15:54 +01:00
Daniel García
7adc045b80
Updated IP logging to use client_ip, to match old remote behavior.
...
Improved error logging, now it won't show a generic error message in some situations.
Removed delete device, which is not needed as it will be overwritten later.
Logged more info when an error occurs saving a device.
Added orgmanager to JWT claims.
2018-12-09 17:58:38 +01:00
Daniel García
738ad2127b
Fixed some clippy linting issues
2018-12-07 15:01:29 +01:00
Daniel García
cb930a0858
Remove some required values during login, now uses default values
2018-12-07 14:32:40 +01:00
Daniel García
94810c106a
Migrate to rust 2018 edition
2018-12-07 02:05:45 +01:00
Daniel García
2fde4e6933
Implemented proper logging, with support for file logging, timestamp and syslog (this last one is untested)
2018-12-06 20:35:25 +01:00
Daniel García
6364c05789
Fix attachments during key rotation, add individual attachment key
2018-11-27 17:24:12 +01:00
Daniel García
f71f10eac6
Implemented key rotation with the latest vault
2018-11-24 23:00:41 +01:00
Daniel García
5edbd0e952
Merge branch 'master' into rocket-0.4
...
# Conflicts:
# Cargo.lock
# Cargo.toml
# src/api/core/mod.rs
2018-11-19 19:52:43 +01:00
Miroslav Prasil
044cf19913
Prevent accepted user from seeing ciphers until confirmed ( fixes #196 )
2018-11-16 14:21:26 +00:00
Daniel García
f84cbeaaf8
Merge branch 'master' into rocket-0.4
...
# Conflicts:
# src/db/models/organization.rs
2018-11-14 16:14:49 +01:00
Miroslav Prasil
dd684753d0
Fix gt()
2018-11-13 21:38:56 +00:00
Miroslav Prasil
f3e6cc6ffd
Set PartialOrd to consider invalid i32 UserOrgType lower than anything
2018-11-13 16:34:21 +00:00
Miroslav Prasil
66a4c5d48b
Implement comparison between i32 and UserOrgType
2018-11-12 17:13:25 +00:00
Daniel García
c673370103
Updated bw_rs to Rocket version 0.4-rc1
2018-11-01 19:25:09 +01:00
Daniel García
02fd68d63b
Merge pull request #218 from janost/refactor-folder-save
...
Folder::save() should return QueryResult instead of bool
2018-10-14 20:07:27 +02:00
janost
e985221b50
User::save() should return QueryResult instead of bool
2018-10-14 19:33:12 +02:00
janost
77cf63c06d
Folder::save() should return QueryResult instead of bool
2018-10-14 18:25:04 +02:00
Daniel García
faec050a6d
Merge pull request #217 from janost/refactor-device-save
...
Device::save() should return QueryResult instead of bool
2018-10-14 17:35:59 +02:00
janost
58a78ffa54
Device::save() should return QueryResult instead of bool
2018-10-14 16:17:37 +02:00
janost
64f6c60bfd
Organization::save() and UserOrganization::save() should return QueryResult instead of bool
2018-10-14 16:04:23 +02:00
Miroslav Prasil
a28caa33ef
Implement poor man's admin panel
2018-10-12 15:20:10 +01:00
janost
5292d38c73
CollectionCipher::save() and delete() should return QueryResult instead of bool
2018-10-07 11:06:11 +02:00
janost
380cf06211
Cipher::save() should return QueryResult instead of bool
2018-10-06 14:13:49 +02:00
Miroslav Prasil
54f54ee845
Update revision for users on collection save
2018-10-01 17:04:15 +01:00
Miroslav Prasil
c3c74506a7
Add missing fields to returned Org json
2018-10-01 16:00:11 +01:00
Daniel García
ebb66c374e
Implement KDF iterations change ( Fixes #195 )
2018-09-19 17:30:14 +02:00
Daniel García
8651df8c2a
Fixed some lint issues
2018-09-13 21:55:23 +02:00
Daniel García
a01fee0b9f
Merge branch 'ws'
...
# Conflicts:
# Cargo.toml
# src/api/core/ciphers.rs
# src/main.rs
2018-09-13 15:59:45 +02:00
Miroslav Prasil
c1cd4d9a6b
Modify User::new to be keyless and paswordless
2018-09-11 14:25:12 +01:00
Miroslav Prasil
ec05f14f5a
Implement poor man's invitation via Organization invitation
2018-09-11 13:09:59 +01:00
Daniel García
69dcbdd3b2
Merge branch 'master' into ws
2018-09-04 17:46:38 +02:00
Miroslav Prasil
049aa33f17
Fix editing users in Organization
2018-09-04 12:15:46 +01:00
Shane A. Faulkner
d8e5e53273
Add notifications for cipher delete and create
2018-09-01 10:59:13 -05:00
Shane A. Faulkner
b6502e9e9d
Add support for CipherUpdate notifications
2018-08-31 23:30:53 -05:00
Daniel García
d70864ac73
Initial version of websockets notification support.
...
For now only folder notifications are sent (create, rename, delete).
The notifications are only tested between two web-vault sessions in different browsers, mobile apps and browser extensions are untested.
The websocket server is exposed in port 3012, while the rocket server is exposed in another port (8000 by default). To make notifications work, both should be accessible in the same port, which requires a reverse proxy.
My testing is done with Caddy server, and the following config:
```
localhost {
# The negotiation endpoint is also proxied to Rocket
proxy /notifications/hub/negotiate 0.0.0.0:8000 {
transparent
}
# Notifications redirected to the websockets server
proxy /notifications/hub 0.0.0.0:3012 {
websocket
}
# Proxy the Root directory to Rocket
proxy / 0.0.0.0:8000 {
transparent
}
}
```
This exposes the service in port 2015.
2018-08-30 17:58:53 +02:00
Baelyk
fe473b9e75
Attachment::save()
returns Result instead of bool (#161 )
...
Returning a result instead of a bool as per #6
2018-08-29 15:22:19 +02:00
Kumar Ankur
781056152a
Support password history #155 ( #156 )
...
* Password History Support (#155 )
* down.sql logic not required as per review comments
2018-08-27 23:08:58 +02:00
Miroslav Prasil
2b2401be19
Update affected users revision on cipher and folder change
2018-08-21 17:32:00 +01:00
Miroslav Prasil
9eea0151ba
Update user revision timestamp on Organization changes
2018-08-21 13:26:22 +01:00
Daniel García
d332e87655
Merge pull request #144 from mprasil/collection_revision
...
Update affected users revision when there are collection changes
2018-08-21 13:47:19 +02:00
Miroslav Prasil
a5ef8aef0f
Update affected users revision when there are collection changes
2018-08-21 12:20:55 +01:00
Miroslav Prasil
4fb09c5b4d
Actually update the revision date for user struct, not just in DB
2018-08-21 10:36:04 +01:00
Daniel García
16056626b0
Merge pull request #131 from mprasil/revision_date
...
Implement update_revision trigger
2018-08-13 14:38:30 +02:00
Miroslav Prasil
626a3c93ba
Revert "Merge branch 'beta' of https://github.com/krankur/bitwarden_rs into beta"
...
This reverts commit 3fd3d8d5e9
.
2018-08-13 12:35:41 +01:00
Miroslav Prasil
3f5a99916a
Implement update_revision trigger
2018-08-13 10:58:39 +01:00
Kumar Ankur
3fd3d8d5e9
Merge branch 'beta' of https://github.com/krankur/bitwarden_rs into beta
2018-08-10 23:49:34 +05:30
Kumar Ankur
ddda86b90d
Implemented bulk cipher share (share selected) #100
2018-08-10 23:20:19 +05:30
Miroslav Prasil
2872f40d13
WAL journal mode and delete retry added
2018-07-31 16:43:43 +01:00
Miroslav Prasil
692ed81306
Do not show organization stuff to not accepted user
2018-07-13 17:21:19 +01:00
Daniel García
be4e6c6f0c
Merge branch 'master' into u2f
2018-07-12 23:54:56 +02:00
Daniel García
2f892cb866
Hide org ciphers from unconfirmed users (Showed deciption error)
2018-07-12 23:45:41 +02:00
Daniel García
dae92b9018
Implemented U2F, refactored Two Factor authentication, registering U2F device and authentication should work. Works on Chrome on MacOS with a virtual device.
2018-07-12 22:22:10 +02:00
Daniel García
a1ffa4c28d
Allow TOTP generation in organizations ( Fixes #50 )
2018-07-01 15:49:52 +02:00
Daniel García
0905355629
Fix wrong case in import struct, invite collections and user Uri back-compat
2018-06-13 14:39:29 +02:00
Daniel García
b0ee5f6570
Improved two factor auth
2018-06-01 15:08:03 +02:00
Miroslav Prasil
ac2ca5812b
Remove unused UserOrganization
2018-06-01 13:40:57 +01:00
Miroslav Prasil
e2b4f3b13f
Bettech check for cipher access
2018-06-01 13:40:40 +01:00
Daniel García
4cf9f83866
Fixed sync
2018-06-01 00:50:22 +02:00
Daniel García
1a4b1a8254
Enabled unused variable warning again, fixed some possible bugs where we didn't check some parameters, and explicitly marked all unused parameters (mostly orgheaders)
2018-05-30 22:30:45 +02:00
Miroslav Prasil
62be23b1c0
Support listing and deleting users from collection
2018-05-30 15:40:37 +01:00
Miroslav Prasil
85ecd001a5
Fix user invitation
2018-05-28 17:26:02 +01:00
Miroslav Prasil
a6105f7029
Let find_by_uuid_and_user return indirect collection ( #26 )
2018-05-21 17:31:46 +01:00
Miroslav Prasil
941747f9e8
Implement deleting Organization
2018-05-19 22:09:32 +01:00
Miroslav Prasil
a0d2ca3f24
Implement deleting collections
2018-05-16 23:05:50 +01:00
Miroslav Prasil
e54b52f109
Improve Folder::delete() to handle FolderCipher
2018-05-16 17:19:52 +01:00
Miroslav Prasil
21c1ab7fda
Remove dependent items when removing cipher
2018-05-15 17:28:24 +01:00
Miroslav Prasil
8b18c4c633
Implement cipher sharing
2018-05-14 16:19:24 +01:00
Miroslav Prasil
c054d0094a
set max storage to non-null value
2018-05-14 15:04:13 +01:00
Miroslav Prasil
89e544009f
Fix duplicate ciphers returned from find_by_user
2018-05-13 13:21:51 +01:00
Miroslav Prasil
8bed867798
Also list shared ciphers in find_by_user
2018-05-13 13:21:51 +01:00
Miroslav Prasil
dfb1232081
Filter collection lists based on user
2018-05-11 21:08:14 +01:00
Miroslav Prasil
34f2aa68f4
Implement Collection-Cipher mapping
2018-05-11 21:08:14 +01:00
Daniel García
032134aabc
Fixed some errors asigning collections to users
2018-05-11 20:08:02 +02:00
Daniel García
79b4ddcae8
Added read_only bit to users_collections
2018-05-04 20:10:35 +02:00
Daniel García
0cb58add54
Implemented some admin methods, inserted CollectionsUsers only when Org accessAll == false, and implemented find_collection when user has access_all in Org
2018-05-04 19:47:31 +02:00
Daniel García
92236394e6
Delete folder mappings when deleting folders and make sure that we can't change a ciphers owner when created
2018-05-04 19:02:19 +02:00
Miroslav Prasil
c4360ee697
Save extra query when checking write access
2018-05-04 13:42:30 +01:00
Miroslav Prasil
a0796acbc7
Implement suggested improvements
2018-05-03 17:47:27 +01:00
Miroslav Prasil
c3be1b4298
Fix FolderCipher creation, handle some errors
2018-05-01 16:54:22 +01:00
Miroslav Prasil
514a372bc8
Add per-user folder-cipher mapping
2018-04-30 23:38:55 +01:00