nodemcu-httpserver/httpserver-basicauth.lua
2015-07-18 23:17:14 -05:00

30 lines
928 B
Lua

-- httpserver-basicauth.lua
-- Part of nodemcu-httpserver, authenticates a user using http basic auth.
-- Author: Sam Dieck
basicAuth = {}
function basicAuth.authenticate(header)
conf = dofile("httpserver-conf.lc")
-- Parse basic auth http header.
-- Returns the username if header contains valid credentials,
-- nil otherwise.
local credentials_enc = header:match("Authorization: Basic ([A-Za-z0-9+/=]+)")
if not credentials_enc then
return nil
end
local credentials = dofile("b64.lc").decode(credentials_enc)
local user, pwd = credentials:match("^(.*):(.*)$")
if user ~= conf.auth.user or pwd ~= conf.auth.password then
return nil
end
print("httpserver-basicauth: User " .. user .. " authenticated.")
return user
end
function basicAuth.authErrorHeader()
return "WWW-Authenticate: Basic realm=\"nodemcu-httpserver\""
end
return basicAuth