BlackDex
3442eb1b9d
Trying to fix issue #687
...
- Using an older commit from rocket repo
5 years ago
Daniel García
e449912f05
Generate recovery codes for email and duo
5 years ago
Daniel García
d29b6bee28
Remove unnecessary clones and other clippy fixes
5 years ago
Miro Prasil
00a11b1b78
Stop leaking usernames when SIGNUPS_ALLOWED=false
...
This fixes #691 - respond in less specific way to not leak the
fact that user is already registered on the server.
5 years ago
BlackDex
ee550be80c
Added http favicon url when response failed
5 years ago
Daniel García
fccc0a4b05
Update rocket to latest master
...
Downgrade rust version to fix cargo issue
Set rustup profile to minimal
5 years ago
Jellyfrog
ebc47dc161
Remove unneeded WS logging
5 years ago
vpl
3b7a5bd102
Move 2FA email config to after SMTP config
5 years ago
vpl
2edecf34ff
Use user_uuid instead of mut twofactor
5 years ago
vpl
18bc8331f9
Send email when preparing 2FA JsonError
5 years ago
BlackDex
603a964579
Fixed issue #663 .
...
During the 2fa activation there is no twofactor record yet.
Changed the layout a bit so that it will generate a new twofactor record
when it does not exists yet. Else it will just update the already
existing record.
5 years ago
Daniel García
dc515b83f3
Merge pull request #657 from BlackDex/totp-timedrift
...
Updated authenticator TOTP
5 years ago
BlackDex
9466f02696
Recoded TOTP time drift validation
5 years ago
BlackDex
2cde814aaa
Fixed a bug with the sqlite backup feature.
...
When a custom path is used the backup feature does not work.
Changed it so it will take the path of the sqlite file and use that.
5 years ago
BlackDex
d989a19f76
Merge branch 'master' of https://github.com/dani-garcia/bitwarden_rs into totp-timedrift
5 years ago
Daniel García
d292269ea0
Make the blacklist logic be cached
5 years ago
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.
5 years ago
BlackDex
edc482c8ea
Changed HIBP Error message.
...
- Moved the manual link to the check to the top.
- Clearified that hibp is a payed service.
- Changed error logo to hibp logo.
5 years ago
BlackDex
6e5c03cc78
Some modification when no HIBP API Key is set
...
- Added an URL with the useraccount for manual check.
- Added support for HTTP(S)_PROXY for hibp.
5 years ago
Daniel García
881c1978eb
Error when the URL scheme doesn't match the database type
5 years ago
Daniel García
662bc27523
Updated dependencies and fixed disable_admin_token description
5 years ago
Daniel García
e6b763026e
Merge branch 'master' into icon-security
5 years ago
Daniel García
c182583e09
Merge pull request #644 from BlackDex/issue-565
...
Fixed issue #565
5 years ago
Daniel García
d821389c2e
Merge pull request #639 from vverst/cors-update
...
Change CORS headers
5 years ago
BlackDex
be2916333b
Fixed issue #565
...
Issue fixed by omitting the cookie header when cookie_str is empty
5 years ago
BlackDex
9124d8a3fb
Updated icon blacklisting.
...
- Blacklisting was not effective for redirects and rel href
- Able to blacklist non global IP's like RFC1918, multicast etc...
5 years ago
vpl
7b1da527a6
Change CORS headers
...
Only add Allow-Origin to all requests and move the others to preflight OPTIONS request.
If Origin is `file://` change it to the wildcard.
5 years ago
Miro Prasil
d6e9af909b
Remove the unnecessary check for sqlite
...
The binary we use is called `sqlite3` so no need to check for other
name variants as we won't use those anyways.
5 years ago
Miro Prasil
acdd42935b
Add sqlite binary into the docker images
...
This is done to enable backup functionality in the admin interface while
we're waiting for the libsqlite-sys 0.17 to bubble up in the upstream
dependencies. Then we can start using `VACUUM INTO`
This also extends the check for the sqlite binary to also try `sqlite3`
as this is the name of the binary in baseimage distributions we use.
5 years ago
vpl
56f12dc982
Use Access-Control-Allow-Method
5 years ago
Daniel García
4c07f05b3a
Remove Result<T, E: Debug> in preparation of deprecation as Rocket responder.
...
Removed unnecessary returns
5 years ago
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.
5 years ago
Daniel García
df8114f8be
Updated client kdf iterations to 100000 and fixed some lints
5 years ago
vpl
5a2f968d7a
Set correct response headers, status code
5 years ago
vpl
16d88402cb
Initial version of CORS support
5 years ago
Daniel García
7dcf18151d
Fix onsubmit
5 years ago
Daniel García
e3404dd322
Use the local scripts instead of cloudflare, remove jquery and update config so disabling a master toggle doesn't remove the values
5 years ago
Daniel García
bfc517ee80
Remove unused warning
5 years ago
Daniel García
4a7d2a1e28
Rename static files endpoint
5 years ago
Daniel García
c07c9995ea
Merge pull request #555 from vverst/email-codes
...
Add Email 2FA login
5 years ago
ViViDboarder
672a245548
Remove unecessary clone
5 years ago
vpl
5d50b1ee3c
Merge remote-tracking branch 'upstream/master' into email-codes
5 years ago
vpl
c99df1c310
Compare token using crypto::ct_eq
5 years ago
vpl
591ae10144
Get token from single u64
5 years ago
ViViDboarder
2d2745195e
Allow explicitly defined smtp auth mechansim
5 years ago
Daniel García
026f9da035
Allow removing users two factors
5 years ago
Daniel García
d23d4f2c1d
Allow editing HIBP key in the admin panel
5 years ago
Daniel García
515b87755a
Update HIBP to v3, requires paid API key, fixes #583
5 years ago
vpl
ee7837d022
Add option to require new device emails
5 years ago
Daniel García
07743e490b
Ignore error sending device email
5 years ago
BlackDex
e7b6238f43
Added reqwest proxy support
5 years ago
vpl
ad2225b6e5
Add configuration options for Email 2FA
5 years ago
vpl
5609103a97
Use ring to generate email token
5 years ago
vpl
6d460b44b0
Use saved token for email 2fa codes
5 years ago
vpl
efd8d9f528
Remove some unused imports, unneeded mut variables
5 years ago
vpl
29aedd388e
Add email code logic and move two_factor into separate modules
5 years ago
vpl
27e0e41835
Add email authenticator logic
5 years ago
vpl
0b60f20eb3
Add email message for twofactor email codes
5 years ago
Daniel García
c9c3f07171
Updated dependencies and fixed panic getting icons
5 years ago
vpl
df71f57d86
Move send device email to end of password login
...
Send new device email after two factor authentication.
5 years ago
vpl
60e39a9dd1
Move retrieve/new device from connData to separate function
5 years ago
vpl
bc6a53b847
Add new device email when user logs in
5 years ago
Daniel García
05a1137828
Move backend checks to build.rs to fail fast, and updated dependencies
5 years ago
Nick Fox
2e300da057
Fix #468 - Percent-encode the email address in invite link
5 years ago
Cubity_First
6989fc7bdb
Corrected Spelling
...
Changed it from Chache to Cache on Line 207
6 years ago
Daniel García
76f38621de
Update dependencies and remove unwraps from Cipher::to_json
6 years ago
Daniel García
12af32b9ea
Don't print DB URL
6 years ago
Daniel García
9add8e19eb
Update dependencies and remove travis unused feature
6 years ago
Daniel García
5710703c50
Make sure the backup option only appears when using sqlite
6 years ago
Daniel García
1322b876e9
Merge pull request #493 from endyman/feature/initial_mysql_support
...
Initial support for mysql
6 years ago
Daniel García
9ed2ba61c6
Merge pull request #475 from TheMardy/master
...
Create Backup funcitonality
6 years ago
Nils Domrose
62a461ae15
remove syslog from ci, make features flag more clear
6 years ago
Nils Domrose
4859932d35
fixed typo
6 years ago
Nils Domrose
dc36f0cb6c
re-added sqlite check_db code, cleanup
6 years ago
Nils Domrose
ff759397f6
initial mysql support
6 years ago
Emil Madsen
233b48bdad
Fix missing joinable in schema
6 years ago
Emil Madsen
e22e290f67
Fix key and type variable names for mysql
6 years ago
Emil Madsen
ab95a69dc8
Rework migrations for MySQL
6 years ago
Emil Madsen
85c8a01f4a
Merge branch 'master' of github.com:Skeen/bitwarden_rs
6 years ago
Emil Madsen
42af7c6dab
MySQL database
6 years ago
Daniel García
4f45cc081f
Update ring to 0.14, jwt to 6.0, and u2f
6 years ago
TheMardy
ef551f4cc6
Create Backup funcitonality
...
Added create backup functionality to the admin panel
6 years ago
Daniel García
5521a86693
Change path for served images to avoid collision with vault images
6 years ago
Daniel García
3160780549
Merge pull request #401 from TheMardy/master
...
Images in Email Templates
6 years ago
TheMardy
f0701657a9
Changed to Bitwarden_RS Logo
6 years ago
Daniel García
874f5c34bd
Formatting
6 years ago
Daniel García
253faaf023
Use users duo host when required, instead of always using the global one
6 years ago
Daniel García
3d843a6a51
Merge pull request #460 from janost/organization-vault-purge
...
Fixed purging organization vault
6 years ago
janost
03fdf36bf9
Fixed purging organization vault
6 years ago
Daniel García
fdcc32beda
Validate Duo credentials when custom
6 years ago
Daniel García
bf20355c5e
Merge branch 'duo'
6 years ago
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.
6 years ago
Daniel García
2e12114350
Always create the user when inviting from admin panel
6 years ago
ViViDboarder
d3a8a278e6
Add new endpoint for retrieving all users
6 years ago
Daniel García
8d9827c55f
Implement selection between global config and user settings for duo keys.
6 years ago
Daniel García
cad63f9761
Auto generate akey
6 years ago
Daniel García
bf446f44f9
Enable DATA_FOLDER to affect default CONFIG_FILE path
6 years ago
Daniel García
621f607297
Update dependencies and fix some warnings
6 years ago
Daniel García
754087b990
Add global duo config and document options in .env template
6 years ago
Daniel García
cfbeb56371
Implement user duo, initial version
...
TODO:
- At the moment each user needs to configure a DUO application and input the API keys, we need to check if multiple users can register with the same keys correctly and if so we could implement a global setting.
- Sometimes the Duo frame doesn't load correctly, but canceling, reloading the page and logging in again seems to fix it for me.
6 years ago
Daniel García
c5832f2b30
With the latest fern, syslog can be a config option instead of a build flag
6 years ago
Daniel García
2475c36a75
Implement log_level config option
6 years ago
Daniel García
c384f9c0ca
Set default log level to Info, we don't use debug anyway and it just fills the logs with other crates info.
6 years ago
BlackDex
6b686c18f7
Fixed long e-mail message extending 1000 lines.
...
- Added quoted_printable crate to encode the e-mail messages.
- Change the way the e-mail gets build to use custom part headers.
6 years ago
Nick Fox
7976d39d9d
Adjust whitespace
6 years ago
Nick Fox
5ee9676941
Break up long line to stop SMTP from breaking
6 years ago
Daniel García
4b40cda910
Added domain blacklist regex for icons service and improved valid domain check.
...
Reorganized the icons code a bit.
6 years ago
Daniel García
4689ed7b30
Changed uppercase deserializer to avoid a clone.
6 years ago
Daniel García
61515160a7
Allow changing error codes and create an empty error.
...
Return 404 instead of 400 when no accounts breached.
6 years ago
Daniel García
e93538cea9
Add option to use wrapped TLS in email, instead of STARTTLS upgrade
6 years ago
Daniel García
b4244b28b6
Update admin page scripts and fixed broken tooltip
6 years ago
Daniel García
43f9038325
Add option to force resync clients in admin panel
6 years ago
Daniel García
339044f8aa
Add warning about config panel values overriding env vars.
6 years ago
Daniel García
0718a090e1
Trim spaces from admin token during authentication and validate that the admin panel token is not empty
6 years ago
Daniel García
9e1f030a80
Explicitly close SMTP connection in case of error.
6 years ago
Daniel García
04922f6aa0
Some formatting and dependency updates
6 years ago
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.
6 years ago
Daniel García
10756b0920
Update dependencies and fix some lints
6 years ago
Frank Petrilli
d156170971
Minor typo fix conect => connect
6 years ago
Дамјан Георгиевски
473f8b8e31
remove some unneeded mutability
6 years ago
Daniel García
5794969f5b
Merge pull request #406 from shauder/feature/disable-admin-token
...
Allow the Admin token to be disabled in the advanced menu
6 years ago
Shane Faulkner
8b5b06c3d1
Allow the Admin token to be disabled in the advanced menu
6 years ago
Daniel García
b50c27b619
Print a warning when an env variable is being overriden by the config file, and reorganize the main file a bit.
...
Modified the JWT key generation, now it should also show the output of OpenSSL in the logs.
6 years ago
Daniel García
5ee04e31e5
Updated dependencies, removed some unnecessary clones and fixed some lints
6 years ago
Daniel García
bf6ae91a6d
Remove margins on small devices
6 years ago
Daniel García
828e3a5795
Add extra padding when the toolbar collapses in small devices
6 years ago
Daniel García
7b5bcd45f8
Show read-only options in the config panel and the env variable names in the tooltips
6 years ago
Miroslav Prasil
0b903fc5f4
Extended the template file and refer to wiki
6 years ago
Miroslav Prasil
4df686f49e
Add an option to not enable WAL (should help in #399 )
6 years ago
Daniel García
d7eeaaf249
Escape user data from admin panel when calling JS
6 years ago
TheMardy
84fb6aaddb
Set correct MIME type
6 years ago
Daniel García
a744b9437a
Implemented multiple U2f keys, key names, and compromised checks
6 years ago
Daniel García
6027b969f5
Delete old devices when deauthorizing user sessions
6 years ago
Daniel García
93805a5d7b
Fix Yubikeys deleted on error
6 years ago
TheMardy
8526055bb7
Added images to email templates
6 years ago
TheMardy
a79334ea4c
Added static email image routes
6 years ago
Daniel García
d3773a433a
Removed list of mounted routes at startup by default, with option to add it back. This would get annoying when starting the server frequently, because it printed ~130 lines of mostly useless info
6 years ago
Daniel García
0f0a87becf
Add version to initial message
6 years ago
BlackDex
3b27dbb0aa
Added config option for icon download timeout
6 years ago
Daniel García
9636f33fdb
Implement constant time equal check for admin, 2fa recover and 2fa remember tokens
6 years ago
Daniel García
79fdfd6524
Add missing url parameter
6 years ago
Daniel García
d086a99e5b
Implemented HTML emails with text alternative
6 years ago
TheMardy
22b0b95209
Added HTML templates (+14 squashed commit)
...
Squashed commit:
[ece2260] Plaintext send_org_invite
[01d4884] Plaintext pw_hint_some
[6ce5173] Plaintext pw_hint_none
[881af3e] Plaintext invite_confirmed
[ce78621] Plaintext invite_accepted
[13a44a4] Rename send_org_invite.hbs to send_org_invite.html.hbs
[b52bf2f] Rename pw_hint_some.hbs to pw_hint_some.html.hbs
[e0d1aeb] Rename pw_hint_none.hbs to pw_hint_none.html.hbs
[898dbcd] Rename invite_confirmed.hbs to invite_confirmed.html.hbs
[107af31] Rename invite_accepted.hbs to invite_accepted.html.hbs
[d26d662] Updated send_org_invite template
[71f47af] Updated pw_hint_some template
[c2ca3c2] Updated pw_hint_none template
[50f8bfb] Updated invite_accepted template
[17f96f8] Updated invite_confirmed template
6 years ago
Daniel García
28d1588e73
Show version in admin panel
6 years ago
Daniel García
f3b1a5ff3e
Error when admin panel is disabled
6 years ago
Daniel García
330e90a6ac
Hide secrets in config panel
6 years ago
Daniel García
820c8b0dce
Change use of deserialize_with for Option iterator
6 years ago
Daniel García
8b4a6f2a64
Fixed some clippy lints and changed update_uuid_revision to only use one db query
6 years ago
Daniel García
ef63342e20
Add reset user config button
6 years ago
Daniel García
89840790e7
Fix .env path traversal issue
6 years ago
Daniel García
a72809b225
Yubico and SMTP enable/disable master switches
6 years ago
Daniel García
9976e4736e
Add groups
6 years ago
Daniel García
dc92f07232
Added env variable to select config file. Initial work towards groups and added tooltips with descriptions and nicer names
6 years ago
Daniel García
3db815b969
Implemented config form and fixed config priority
6 years ago
Daniel García
ade293cf52
Save config
6 years ago
Daniel García
877408b808
Implement basic config loading and updating. No save to file yet.
6 years ago
Daniel García
86ed75bf7c
Config can now be serialized / deserialized
6 years ago
Daniel García
20d8d800f3
Updated dependencies
6 years ago
Miroslav Prasil
08ca47cadb
Update revision when adding or removing cipher from collection
6 years ago
Miroslav Prasil
5272b465cc
Update revision of affected users when deleting Collection
6 years ago
Miroslav Prasil
637f655b6f
Do not allocate uneccessary Vec
6 years ago
Miroslav Prasil
b3f7394c06
Do not update revision at the end, as we already did that
6 years ago
Miroslav Prasil
1a5ecd4d4a
cipher does not need to be mutable
6 years ago
Miroslav Prasil
bd65c4e312
Remove superfluous cipher.save() call
6 years ago
Miroslav Prasil
bce656c787
Retry updating revision - fixes #383
6 years ago
BlackDex
9026cc8d42
Fixed issue when the iconlist is smaller then 5
...
When the iconlist was smaller then 5 items, it would cause a panic.
Solved by using .truncate() on the iconlist.
6 years ago
BlackDex
574b040142
Loop through the iconlist until an icon is found
...
Loop for a maximum of 5 times through the iconlist or until a
successful download of an icon.
6 years ago
BlackDex
c13f115473
Fixed issue #380
...
- Created a separate function for parsing the sizes attribute
- Parsing sizes now with regex
- Should work with any non-digit separator
6 years ago
BlackDex
bc461d9baa
Some small changes on the iter of the cookies
6 years ago
BlackDex
5016e30cf2
Added cookies to the icon download request.
...
Some sites use XSRF Tokens, or other Tokens to verify a subseqense
response. The cookies which are sent during the page request are now
used when downloading the favicon.
A site which uses this is mijn.ing.nl.
6 years ago
Daniel García
f42ac5f2c0
Update web vault error message
6 years ago
Daniel García
2a60414031
Reuse the client between requests, and use the client when downloading the icons themselves
6 years ago
BlackDex
feb74a5e86
Changed the way to fix the href
...
- Using url from reqwest to fix href, this fixes:
+ "//domain.com/icon.png"
+ "relative/path/to/icon.png"
+ "/absolute/path/to/icon.png"
- Removed fix_href function
- Some variable changes
6 years ago
Daniel García
c0e350b734
Disable icon downloads, accept optional query after icon href, format and clippy fixes
6 years ago
Daniel García
bef1183c49
Only send one notification per vault import and purge, improve move ciphers functions
6 years ago
Daniel García
f935f5cf46
Remove local icon extractor
6 years ago
Daniel García
07388d327f
Merge pull request #370 from BlackDex/favicons
...
Added better favicon downloader.
6 years ago
BlackDex
4de16b2d17
Removed unwrap and added ?
6 years ago
BlackDex
da068a43c1
Moved function call to get_icon_url to prevent error bubbeling
6 years ago
BlackDex
9657463717
Added better favicon downloader.
6 years ago
Daniel García
69036cc6a4
Add disabled user badge (no password) and deauthorize button to admin page.
6 years ago
Daniel García
700e084101
Add 2FA icon to admin panel
6 years ago
Daniel García
a1dc47b826
Change config to thread-safe system, needed for a future config panel.
...
Improved some two factor methods.
6 years ago
Daniel García
86de0ca17b
Fix editing users from collections menu
6 years ago
Stephen White
fc0e239bdf
No point calling find_by_uuid now we don't use the result.
6 years ago
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
6 years ago
Daniel García
ddd49596ba
Fix invite empty email
6 years ago
Daniel García
b8cabadd43
Fix admin page links
6 years ago
Daniel García
ce42b07a80
Update Diesel to 1.4 and other dependencies
6 years ago
Daniel García
bfd93e5b13
Show organizations in admin panel, implement reload templates option
6 years ago
Daniel García
a797459560
Implement HIBP check [WIP].
...
Add extra security attributes to admin cookie.
Error handling.
6 years ago
Daniel García
6cbb683f99
Rename admin templates to match email
6 years ago
Daniel García
92bbb98d48
Created base template
6 years ago
Daniel García
834c847746
Implement admin JWT cookie, separate JWT issuers for each type of token and migrate admin page to handlebars template
6 years ago
Daniel García
97aa407fe4
Move email templates to subfolder
6 years ago
TBK
d8116a80df
Add Feature-Policy header
6 years ago
Daniel García
e0aec8d373
Use new i64::to_be_bytes and remove byteorder dep
...
(https://doc.rust-lang.org/stable/std/primitive.i64.html#method.to_be_bytes )
6 years ago
Daniel García
1ce2587330
Correct update cipher order: first save cipher, then cipher-folder, then notify
6 years ago
Miroslav Prasil
71a10e0378
Fix sharing the item to organization.
6 years ago
Daniel García
9bf13b7872
Can't return inside multipart closure
6 years ago
Daniel García
d420992f8c
Update some function calls to use ?
6 years ago
Daniel García
c259a0e3e2
Save recovery code when using yubikey and stop repeating headers.user everywhere
6 years ago
Daniel García
432be274ba
Improve org mismatch check, consider different orgs
6 years ago
Daniel García
484bf5b703
Check that the client is not updating an outdated cipher, that should be part of an org now
6 years ago
Daniel García
4bf32af60e
Fix folder notifications, enable template strict mode and add missing option to env template
6 years ago
Daniel García
0e4a746eeb
Added SMTP_FROM_NAME
6 years ago
Daniel García
2fe919cc5e
Embed the default templates
6 years ago
Daniel García
bcd750695f
Default to $data_folder/templates and remove dev option (use `TEMPLATES_FOLDER=src/static/templates` instead)
6 years ago
Daniel García
19b6bb0fd6
Initial stab at templates
6 years ago
Daniel García
f571df7367
Revert yubikey feature, not needed anymore
6 years ago
Daniel García
de51bc782e
Updated dependencies, removing need for yubico fork
6 years ago
Daniel García
c5aef60bd7
Implement unofficial warning message
6 years ago
Daniel García
6f52104324
Fix casing error in Attachment, should fix 'Attachment doesn't exist' errors
6 years ago
Daniel García
1d7f704754
Send CipherUpdate when adding and deleting attachments
6 years ago
Daniel García
1d034749f7
Fix AArch64 build by disabling yubico
6 years ago
Daniel García
320266606e
Implement put collections
6 years ago
Daniel García
a0a08c4c5a
Include IP in invalid admin token error
6 years ago
Daniel García
4309df8334
Only create invitations when SMTP is disabled, and ignore invitations if we have a token.
...
Disallow users from accepting invitation twice
6 years ago
Daniel García
f1161c65fb
Make sure an invitation is created when reinviting
6 years ago
Daniel García
50eeb4f651
Remove whitespace before processing tokens
6 years ago
Daniel García
21b85b78b1
Changed reinvite check and removed obsolete comment
6 years ago
Daniel García
673adde9f1
Make the admin retype the user name before deleting
6 years ago
Daniel García
c9063a06b4
Print unauthorized error message
6 years ago
Daniel García
5e37471488
Merge pull request #323 from njfox/invite_accepted_email
...
Send email notifications when invitations are accepted/confirmed
6 years ago
Nick Fox
0a74e79cea
Refactor generate_invite_claims, make org_name and org_id optional
6 years ago
Nick Fox
7db66f73f0
Refactor invited_by_email check
6 years ago
Nick Fox
2f5bdc23f6
Fix formatting and add vault link to notification emails
6 years ago
Nick Fox
cec28a85ac
Update admin page to work with new invitation flow
6 years ago
Daniel García
5f49ecd7f3
Updated dependencies to use u2f crate directly, and some style changes
6 years ago
Nick Fox
736c0e62f2
Send emails to inviters/invitees when invites are accepted/confirmed
6 years ago
Nick Fox
43eb064351
Replace invite/reinvite email functions with generic send_email
6 years ago
Daniel García
30e768613b
Start using rustfmt and some style changes to make some lines shorter
6 years ago
Daniel García
adb8052689
Updated Error to implement Display and Debug, instead of using custom methods
6 years ago
Daniel García
1483829c94
Removed invalid todo
6 years ago
Daniel García
acb9d1b3c6
Remove config option for admin email, embdedded admin page, managed IO::Error, and added security and cache headers globally
6 years ago
Daniel García
301919d9d4
Modified navigation bar and corrected some comments
6 years ago
Daniel García
2bb0b15e04
Implemented better errors for JWT
6 years ago
Daniel García
250a2b340f
Use new Errors in latest changes
6 years ago
Daniel García
b2fc0499f6
Finish invite functionality, and remove virtual organization
6 years ago
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.
6 years ago
Daniel García
172f1770cf
Embed the icon in the binary, no need to download when it's not going to change
6 years ago
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.
6 years ago
Daniel García
5fecf09631
Initial version of admin panel, list users and reload user list works. No serious auth method yet, password is 'token123'
6 years ago
Daniel García
7d7d8afed9
Merge pull request #318 from njfox/reinvite_endpoint
...
Add email reinvite endpoint
6 years ago
Nick Fox
f20c4705d9
Refactor invite claims and disallow reinvites to virtual_org
6 years ago
Nick Fox
3142d8d01f
Add more detail to invitation not found error
6 years ago
Nick Fox
84fa5a4ed6
Implement reinvite endpoint
6 years ago
Daniel García
004a3f891f
Merge pull request #315 from aksdb/master
...
Restrict join on users_collections to current user (fixes #313 )
6 years ago
Andreas Schneider
e7ea5097f4
Restrict join on users_collections to current user ( fixes #313 )
6 years ago
Miroslav Prasil
8451a70de6
Rewrite find_by_user_uuid to use one query
6 years ago
Nick Fox
ec715d78fb
Change log timestamp format so fail2ban can parse it
6 years ago
Nick Fox
b0ac640d8b
Use JWT to validate existing user invites
6 years ago
Daniel García
2b24b17609
Merge pull request #295 from njfox/invite_emails
...
Add Email Invite Functionality
6 years ago
Nick Fox
2cd736ab81
Validate JWT if a user registers with SMTP invites enabled
6 years ago
Nick Fox
99256b9b3a
Prefix unused params with underscore
6 years ago
Nick Fox
26bf7bc12f
Use upstream jslib invite/registration workflow
6 years ago
Daniel García
b3ec8f2611
Merge pull request #302 from tycho/icon-cache-ttl
...
implement TTLs for icon cache
6 years ago
Steven Noonan
a55c048a62
icons: implement positive/negative cache TTLs
...
Signed-off-by: Steven Noonan <steven@uplinklabs.net>
6 years ago
Steven Noonan
848cd1dbec
add environment variables for ICON_CACHE_TTL and ICON_CACHE_NEGTTL
...
These aren't used yet, but will be utilized by the icon caching service
in a subsequent patch.
Signed-off-by: Steven Noonan <steven@uplinklabs.net>
6 years ago
Daniel García
149e69414f
Merge pull request #293 from dheimerl/patch-1
...
Update web.rs
6 years ago
dheimerl
9a7d3634d5
Changed frame-ancestors to use 'self'
6 years ago
dheimerl
7f7c936049
Fixed web.rs
6 years ago
Nick Fox
9479108fb7
Remove CONFIG.email_invitations
6 years ago
Nick Fox
042c1072d9
Remove CONFIG.email_invitation option
6 years ago
Daniel García
5a9aab1a32
Implement fromform, and ignore case and underscores, fixes #298
6 years ago
dheimerl
037eb0b790
Update web.rs
...
Add frame-ancestors to allow U2F to work in Chrome (and possibly Firefox) extension
6 years ago
Nick Fox
4910b14d57
Implement email invitations and registration workflow
6 years ago
Nick Fox
d428120ec6
Add email_invitations config option
6 years ago
Nick Fox
e2907f4250
Add invite email functionality
6 years ago
Nick Fox
680f5e83d8
Add Invite JWT struct and supporting functions
6 years ago
Daniel García
4e827e4f8a
Implement better retry and use it while saving device
6 years ago
algebro
e26e2319da
Close #264 . Usernames and IP addresses are logged on successful authentication
6 years ago
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.
6 years ago
Daniel García
19754c967f
More changes to the push token, and filtered multipart logs
6 years ago
Daniel García
738ad2127b
Fixed some clippy linting issues
6 years ago
Daniel García
cb930a0858
Remove some required values during login, now uses default values
6 years ago
Daniel García
94810c106a
Migrate to rust 2018 edition
6 years ago
Daniel García
2fde4e6933
Implemented proper logging, with support for file logging, timestamp and syslog (this last one is untested)
6 years ago
Daniel García
dc1bb6de20
Update device push token methods to more closely follow the official server response
6 years ago
Daniel García
6364c05789
Fix attachments during key rotation, add individual attachment key
6 years ago
Daniel García
f71f10eac6
Implemented key rotation with the latest vault
6 years ago
Daniel García
f1acc1e05a
Merge branch 'master' into rocket-0.4
6 years ago
Daniel García
3d36ac4601
Remove unwrap in connection_lost
6 years ago
Daniel García
00abd4c853
Add create endpoint, fixes #253 , fixes #261
6 years ago
Daniel García
a4550e51ea
Update dependencies and add /ciphers/create
6 years ago
Daniel García
5edbd0e952
Merge branch 'master' into rocket-0.4
...
# Conflicts:
# Cargo.lock
# Cargo.toml
# src/api/core/mod.rs
6 years ago
Daniel García
17052b665f
Merge pull request #257 from Step7750/fix-nfc-mobile
...
Fixes NFC Response for Mobile Yubikey OTP Login
6 years ago
Stepan Fedorko-Bartos
f344dbaad4
Fixes NFC Response for Mobile Login
6 years ago
Daniel García
c5c9e3fd65
Merge pull request #254 from Step7750/master
...
Adds Yubikey OTP Support
6 years ago
Stepan Fedorko-Bartos
aba9c28226
Disable Yubikey 2FA if 0 Keys Provided
6 years ago
Stepan Fedorko-Bartos
82e2b8a8c0
Code style changes
6 years ago
Miroslav Prasil
044cf19913
Prevent accepted user from seeing ciphers until confirmed ( fixes #196 )
6 years ago
Stepan Fedorko-Bartos
6d735806c0
Ensures Yubico Creds are set when opening Yubikey Modal
6 years ago
Stepan Fedorko-Bartos
2433d39df5
Allows Custom Yubico OTP Server
6 years ago
Stepan Fedorko-Bartos
9e0e4b13c5
Adds Yubikey OTP Support
6 years ago
Stepan Fedorko-Bartos
e66436625c
Adds Yubico Client ID and Secret Key Env Vars
6 years ago
Daniel García
f84cbeaaf8
Merge branch 'master' into rocket-0.4
...
# Conflicts:
# src/db/models/organization.rs
6 years ago
Miroslav Prasil
dd684753d0
Fix gt()
6 years ago
Miroslav Prasil
f3e6cc6ffd
Set PartialOrd to consider invalid i32 UserOrgType lower than anything
6 years ago
Miroslav Prasil
b94f4db52a
Fix #242
6 years ago
Miroslav Prasil
66a4c5d48b
Implement comparison between i32 and UserOrgType
6 years ago
Daniel García
4638786507
Merge branch 'master' into rocket-0.4
...
# Conflicts:
# src/api/core/mod.rs
6 years ago
Roman Hargrave
62bc58e145
Clean up after u2f endpoint split
6 years ago
Roman Hargrave
760e0ab805
Initial u2f fix
6 years ago
Daniel García
6eb1c3d638
Fixed change in organizations header, now Request::get_param() are indexed by segment, not dynamic parameter.
6 years ago
Daniel García
bc532f54d5
Improve login query parsing
6 years ago
Daniel García
c673370103
Updated bw_rs to Rocket version 0.4-rc1
6 years ago
janost
c32c65d367
Accept PUT and POST on /settings/domains, returns JsonResult, fixes saving Custom Equivalent Domains
6 years ago
janost
daa66b08dc
Fix /sync without query string
6 years ago
janost
55fbd8d468
Don't send Domains if excludeDomains=true on /sync
6 years ago
Miroslav Prasil
2e7fa6440b
Do not spawn WS thread if it's disabled
6 years ago
Miroslav Prasil
9ecc98c3cc
Disable WebSockets negotiation by default
6 years ago
Daniel García
02fd68d63b
Merge pull request #218 from janost/refactor-folder-save
...
Folder::save() should return QueryResult instead of bool
6 years ago
janost
e985221b50
User::save() should return QueryResult instead of bool
6 years ago
janost
77cf63c06d
Folder::save() should return QueryResult instead of bool
6 years ago
Daniel García
faec050a6d
Merge pull request #217 from janost/refactor-device-save
...
Device::save() should return QueryResult instead of bool
6 years ago
janost
58a78ffa54
Device::save() should return QueryResult instead of bool
6 years ago
janost
64f6c60bfd
Organization::save() and UserOrganization::save() should return QueryResult instead of bool
6 years ago
Miroslav Prasil
a28caa33ef
Implement poor man's admin panel
6 years ago
Daniel García
ce4fedf191
Change error response to be closer to upstream
6 years ago
janost
5292d38c73
CollectionCipher::save() and delete() should return QueryResult instead of bool
6 years ago
Daniel García
1049646e27
Merge pull request #210 from janost/cipher-save-refactor
...
Cipher::save() should return QueryResult instead of bool
6 years ago
janost
380cf06211
Cipher::save() should return QueryResult instead of bool
6 years ago
janost
c29bc9309a
Return proper error message for org reinvite
6 years ago
Daniel García
7112c86471
Updated dependencies, removed valid mail check (now done by lettre), and updated global domains file
6 years ago
Daniel García
2aabf14372
Merge pull request #206 from mprasil/collection_revision
...
Collection update updates User revision
6 years ago
Miroslav Prasil
d9457e929c
Add continuation token when we return object list
6 years ago
Miroslav Prasil
86b49856a7
Handle return value from Collection::save()
6 years ago
Miroslav Prasil
54f54ee845
Update revision for users on collection save
6 years ago
Miroslav Prasil
c3c74506a7
Add missing fields to returned Org json
6 years ago
Miroslav Prasil
fb4e6bab14
Clean up the share_collection handling
6 years ago
Daniel García
9eaa9c1a17
Add WEBSOCKET_ADDRESS config option ( Fixes #199 )
6 years ago
Daniel García
3df31e3464
Temp fix for OpenSSL 1.1.1 compatibility
6 years ago
Daniel García
ebb66c374e
Implement KDF iterations change ( Fixes #195 )
6 years ago
Miroslav Prasil
f7951b44ba
Add alias for DELETE call on accounts
6 years ago
Daniel García
b75ba216d1
Return default prelogin values when the user doesn't exist
6 years ago
Daniel García
8651df8c2a
Fixed some lint issues
6 years ago
Daniel García
948554a20f
Added config option for websocket port, and reworked the config parsing a bit.
...
Added SMTP_FROM config to examples and made it mandatory, it doesn't make much sense to not specify the from address.
6 years ago
Daniel García
928e2424c0
Updated dependencies and fixed errors
6 years ago
Daniel García
a01fee0b9f
Merge branch 'ws'
...
# Conflicts:
# Cargo.toml
# src/api/core/ciphers.rs
# src/main.rs
6 years ago
Daniel García
f397f0cbd0
Implement organization import for admins and owners ( Fixes #178 )
6 years ago
Daniel García
3e1afb139c
Remove unnecessary return
6 years ago
Daniel García
d66d4fd87f
Add error message when the proxy doesn't route websockets correctly
6 years ago
Daniel García
1b20a25514
Merge pull request #173 from mprasil/poormans_invites
...
Implement poor man's invitation via Organization invitation
6 years ago
Miroslav Prasil
c1cd4d9a6b
Modify User::new to be keyless and paswordless
6 years ago
Daniel García
b63693aefb
Merge pull request #137 from stammw/master
...
SMTP implementation, along with password HINT email
6 years ago
Miroslav Prasil
ec05f14f5a
Implement poor man's invitation via Organization invitation
6 years ago
Jean-Christophe BEGUE
37d88be2be
return an error when email adress for password hint is not valid
6 years ago
Jean-Christophe BEGUE
1c641d7635
Special messages when user has no password hint
6 years ago
Jean-Christophe BEGUE
e2ab2f7306
Save None instead of empty password hint
6 years ago
Daniel García
69dcbdd3b2
Merge branch 'master' into ws
6 years ago
Miroslav Prasil
c58682e3fb
Fix the logic in user edditing
6 years ago
Miroslav Prasil
db111ae2a0
Check properly the user membership in Organization
6 years ago
Miroslav Prasil
049aa33f17
Fix editing users in Organization
6 years ago
Shane A. Faulkner
d8e5e53273
Add notifications for cipher delete and create
6 years ago
Shane A. Faulkner
b6502e9e9d
Add support for CipherUpdate notifications
6 years ago
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.
6 years ago
Miroslav Prasil
d336d89b83
Fix editing shared cipher ( fixes #164 )
6 years ago
Baelyk
fe473b9e75
`Attachment::save()` returns Result instead of bool ( #161 )
...
Returning a result instead of a bool as per #6
6 years ago
mprasil
062ae4dd59
Allow non-Admin user to share to collection ( fixes #157 ) ( #159 )
...
* Allow non-Admin user to share to collection (fixes #157 )
* Better handling of collection sharing
6 years ago
mprasil
3cfdf9b585
Add DELETE handlers fo cipher and attachment deletion ( fixes #158 ) ( #160 )
6 years ago
Kumar Ankur
781056152a
Support password history #155 ( #156 )
...
* Password History Support (#155 )
* down.sql logic not required as per review comments
6 years ago
Baelyk
c386b3bcf7
Add IP and Username to failed login attempts
...
Resolves #119
6 years ago
Daniel García
8d1ee859f2
Implemented basic support for prelogin and notification negotiation
6 years ago
Miroslav Prasil
2b2401be19
Update affected users revision on cipher and folder change
6 years ago
Miroslav Prasil
9eea0151ba
Update user revision timestamp on Organization changes
6 years ago
Miroslav Prasil
40d09ddd2a
Add PUT alias for Organization updates
6 years ago
Daniel García
d332e87655
Merge pull request #144 from mprasil/collection_revision
...
Update affected users revision when there are collection changes
6 years ago
Miroslav Prasil
a5ef8aef0f
Update affected users revision when there are collection changes
6 years ago
Miroslav Prasil
4fb09c5b4d
Actually update the revision date for user struct, not just in DB
6 years ago
Jean-Christophe BEGUE
9e63985b28
Check email validity before using it for password hint sending
6 years ago
Daniel García
6fdeeb56ce
Merge pull request #140 from mprasil/error_format
...
Update the error format to show message in new Vault
6 years ago
Daniel García
b002d34cd4
Merge pull request #139 from mprasil/edit_shared_fix
...
Add PUT alias for editing cipher
6 years ago
Jean-Christophe BEGUE
401aa7c699
make SMTP authentication optionnal, let lettre pick the better auth mechanism
6 years ago
Miroslav Prasil
12a2dc0901
Add PUT alias for profile update
6 years ago
Miroslav Prasil
b3f3fd81ac
Update theerror format to show message in new Vault
6 years ago
Miroslav Prasil
f2fec345ec
Add PUT alias for editing cipher
6 years ago
Jean-Christophe BEGUE
d68f57cbba
Fix password hint showing logic
6 years ago
Jean-Christophe BEGUE
19e0605d30
Better message into the password hint email
6 years ago
Jean-Christophe BEGUE
812387e586
SMTP integration, send password hint by email.
6 years ago
Miroslav Prasil
00b882935f
Deserialize "null" to empty Vec for Collections
6 years ago
Miroslav Prasil
0dfd9c7670
Add couple more aliases for PUTs and DELETEs
6 years ago
Miroslav Prasil
6ede1743ac
add alias for PUT collections-admin
6 years ago
Daniel García
d3f357b708
Implemented PUT for u2f registration
6 years ago
Daniel García
16056626b0
Merge pull request #131 from mprasil/revision_date
...
Implement update_revision trigger
6 years ago
Jean-Christophe BEGUE
f7ffb81d9e
SMTP configuration parsing and checking
6 years ago
Miroslav Prasil
626a3c93ba
Revert "Merge branch 'beta' of https://github.com/krankur/bitwarden_rs into beta"
...
This reverts commit 3fd3d8d5e9
.
6 years ago
Miroslav Prasil
3f5a99916a
Implement update_revision trigger
6 years ago
Miroslav Prasil
b5a057f063
Merge branch 'master' into beta
6 years ago
Kumar Ankur
3fd3d8d5e9
Merge branch 'beta' of https://github.com/krankur/bitwarden_rs into beta
6 years ago
Kumar Ankur
5f6d721c09
Implemented PUT for /two-factor/authenticator and /two-factor/disable
6 years ago
Kumar Ankur
ddda86b90d
Implemented bulk cipher share (share selected) #100
6 years ago
Daniel García
c6256e1455
Merge pull request #128 from mprasil/revision_date
...
Return revision date in miliseconds (fixes #127 )
6 years ago
Miroslav Prasil
58c1545707
Return revision date in miliseconds ( fixes #127 )
6 years ago
Jean-Christophe BEGUE
d3b4b10d18
Add a explaination to the password hint message #85
6 years ago
Jean-Christophe BEGUE
c031ae9f2f
Make password hints available in the error message #85
6 years ago
Kumar Ankur
aac1304b46
clean up
6 years ago
Kumar Ankur
7dfc759691
Implmeneted DELETE on 'api/ciphers' to delete selected ciphers ( #98 )
6 years ago
Kumar Ankur
74e2ca81ae
Implemented PUT for single cipher sharing ( #97 )
6 years ago
Miroslav Prasil
b163aeb8ca
Merge changes in master to beta branch (concurrency fixes)
6 years ago
Kumar Ankur
0e095a9fa4
change to reuse the logic for POST in PUT as well
6 years ago
Kumar Ankur
2f6aa3c363
Reverting removal of 'api/ciphers/move' POST as it is required for backward compatibility
6 years ago
Kumar Ankur
fcc485384f
clean up
6 years ago
Kumar Ankur
91a2319325
Implementing PUT for ciphers/move ( #99 )
6 years ago
Shane A. Faulkner
34d2648509
Merge pull request #3 from shauder/master
...
Sync working branch with changes in master upstream
6 years ago
Miroslav Prasil
2872f40d13
WAL journal mode and delete retry added
6 years ago
Daniel García
a291dea16f
Updated dependencies and Docker image to new web-vault
6 years ago
Shane A. Faulkner
98bae4a0a1
Cleanup and working with 2 or less attachments
6 years ago
Miroslav Prasil
233d23a527
Return 404 in case the path doesn't match instead of 500
6 years ago
Miroslav Prasil
de72655bb1
Add confirmed check to the OrgHeaders request guard
6 years ago
Shane A. Faulkner
31349a47d3
Very dirty addition of missing api's
6 years ago
Miroslav Prasil
692ed81306
Do not show organization stuff to not accepted user
6 years ago
Daniel García
819622e310
Documented U2F, removed debug prints, and documented missing features
6 years ago
Daniel García
970863ffb1
Set facets contentType
6 years ago
Daniel García
75615bb5c8
Ignore U2F challenge if not provided. Also checked that error_code has to be 0 for a successfull registration
6 years ago
Daniel García
6378d96d1a
Add some extra debug prints
6 years ago
Daniel García
c722256cbd
Remove debug print
6 years ago
Daniel García
8ff50481e5
Use X-Forwarded-Host if available
6 years ago
Daniel García
be4e6c6f0c
Merge branch 'master' into u2f
6 years ago
Daniel García
2f892cb866
Hide org ciphers from unconfirmed users (Showed deciption error)
6 years ago
Daniel García
4f6f510bd4
Improve domain detection, should fix attachment problems. Otherwise, set the `DOMAIN` env variable to the correct domain
6 years ago
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.
6 years ago
Daniel García
1cb67eee69
Implement leave organization (accessed from the bottom of the user's settings page)
6 years ago
Daniel García
e88d8c856d
Change host url to https when it's enabled, should fix some problems downloading attachments
6 years ago
Daniel García
df598d7208
Log posible errors when attaching file
6 years ago
Daniel García
35b4ad69bd
Remove unused warnings
6 years ago
Daniel García
22786c8c9d
Merge pull request #55 from mprasil/debug_prints
...
Remove some extra debug prints
6 years ago
Daniel García
a1ffa4c28d
Allow TOTP generation in organizations ( Fixes #50 )
6 years ago
Miroslav Prasil
9f8183deb0
Remove some extra debug prints
6 years ago
Daniel García
ea600ab2b8
Don't ignore errors while downloading icons
6 years ago
Miroslav Prasil
d84d8d756f
Implement delete-admin call
6 years ago
Daniel García
7c316fc19a
Added security headers to web-vault ( fixes #44 )
7 years ago
Daniel García
1c45c2ec3a
Implemented API endpoints to modify profile name and hint, and to change email address, fixes #43
7 years ago
Daniel García
0905355629
Fix wrong case in import struct, invite collections and user Uri back-compat
7 years ago
Daniel García
7983ce4f13
Updated global domains file
7 years ago
Daniel García
5fc0472d88
Removed unneeded cipher code for changing case (fixed by last commit)
7 years ago
Daniel García
410ee9f1f7
Fixed case problems, hopefully this time for real
7 years ago
Daniel García
538dc00234
Improved configuration and documented options. Implemented option to disable web vault and to disable the use of bitwarden's official icon servers
7 years ago
Daniel García
515c84d74d
Fixed casing issue
7 years ago
Daniel García
f72efa899e
Updated dependencies and created 'rust-toolchain', to mark a working nightly to rustup users, and hopefully avoid some nightly breakage.
7 years ago
Daniel García
483066b9a0
Some style changes, removed useless matches and formats
7 years ago
Daniel García
57850a3379
Fix SSN field in Identity cipher not loading correctly
...
It needs to be all uppercase otherwise the web vault doesn't load it
7 years ago
Daniel García
b0ee5f6570
Improved two factor auth
7 years ago
Miroslav Prasil
ac2ca5812b
Remove unused UserOrganization
7 years ago
Miroslav Prasil
e2b4f3b13f
Bettech check for cipher access
7 years ago
Daniel García
4cf9f83866
Fixed sync
7 years ago
Daniel García
2be1dafe80
Missed some
7 years ago
Daniel García
a71a2c2f48
Added missing collections to /api/sync
7 years ago
Daniel García
5ec728683e
Make sure the inputs are always in the same case (PascalCase, which is what upstream seems to prefer most of the time)
7 years ago
Daniel García
faa26ab8f5
Changed error message
7 years ago