Enhancement: support ESPHome widget authentication (#3846)

* Added cookie support for auth on ESPHome widget

* Lint

* Use credentialedProxyHandler instead

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
pull/3846/merge
Juan Ignacio Sierra 3 months ago committed by GitHub
parent 9ede44b12d
commit 2ee14eb94b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -16,4 +16,5 @@ To group both `offline` and `unknown` devices together, users should use the `of
widget: widget:
type: esphome type: esphome
url: http://esphome.host.or.ip:port url: http://esphome.host.or.ip:port
key: myesphomecookie # only if auth enabled, get the value from a request from the frontend e.g. `authenticated=myesphomecookie`
``` ```

@ -84,6 +84,10 @@ export default async function credentialedProxyHandler(req, res, map) {
headers.Key = `${widget.key}`; headers.Key = `${widget.key}`;
} else if (widget.type === "myspeed") { } else if (widget.type === "myspeed") {
headers.Password = `${widget.password}`; headers.Password = `${widget.password}`;
} else if (widget.type === "esphome") {
if (widget.key) {
headers.Cookie = `authenticated=${widget.key}`;
}
} else { } else {
headers["X-API-Key"] = `${widget.key}`; headers["X-API-Key"] = `${widget.key}`;
} }

@ -1,8 +1,8 @@
import genericProxyHandler from "utils/proxy/handlers/generic"; import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
const widget = { const widget = {
api: "{url}/ping", api: "{url}/ping",
proxyHandler: genericProxyHandler, proxyHandler: credentialedProxyHandler,
}; };
export default widget; export default widget;

Loading…
Cancel
Save