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