| 656 | 656 | return false; |
| 657 | 657 | } |
| 658 | 658 | |
| 659 | 659 | const authHeader = request.get('Authorization')headers.authorization; |
| 660 | + |
| 660 | 661 | if (!authHeader) { |
| 661 | 662 | return false; |
| 662 | 663 | } |
| 663 | 664 | |
| 664 | 665 | const parts[scheme, credentials] = authHeader.split(' '); |
| 665 | | - if (!parts || parts.length < 2 || parts[0].toLowerCase() !== 'basic') { |
| 666 | + |
| 667 | + if (scheme !== 'Basic' || !credentials) { |
| 666 | 668 | return false; |
| 667 | 669 | } |
| 668 | 670 | |
| 669 | | - const b64auth = parts[1]; |
| 671 | + const [username, password] = Buffer.from(credentials, 'base64') |
| 670 | | - const [login, password] = Buffer.from(b64auth, 'base64').toString().split(':'); |
| 672 | + .toString('utf8') |
| 673 | + .split(':'); |
| 671 | 674 | |
| 672 | 675 | const userHandles = await getAllUserHandles(); |
| 673 | 676 | for (const userHandle of userHandles) { |
| 674 | 677 | if (loginusername === userHandle) { |
| 675 | 678 | const user = await storage.getItem(toKey(userHandle)); |
| 676 | 679 | // Verify pass again here just to be sure |
| 677 | 680 | if (user && user.enabled && user.password && user.password === getPasswordHash(password, user.salt)) { |