mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
9639836022
- Add authentication. The Web Application Framework can now be called
directly and it will rqeuire authentication if required, and should re-query
the user to log in when the session expires.
- General clean-up
(This used to be commit 27c5d7dca6
)
74 lines
1.8 KiB
Plaintext
74 lines
1.8 KiB
Plaintext
<%
|
|
libinclude("auth.js");
|
|
|
|
/* Return true to allow access; false otherwise */
|
|
function json_authenticate(serviceComponents, method, scriptTransportId, error)
|
|
{
|
|
// Don't allow any access via ScriptTransport, for now. There are serious
|
|
// potential security exploits that will need to be protected against when
|
|
// we do want to allow use of ScriptTransport. -- djl
|
|
if (scriptTransportId != jsonrpc.Constant.ScriptTransport.NotInUse)
|
|
{
|
|
error.setError(jsonrpc.Constant.ServerError.PermissionDenied,
|
|
"Permission denied");
|
|
return false;
|
|
}
|
|
|
|
// Does the requested method require authentication?
|
|
if (! _authentication_required(serviceComponents, method))
|
|
{
|
|
// Nope. Let 'em in.
|
|
return true;
|
|
}
|
|
|
|
// Did our session expire?
|
|
if (request['SESSION_EXPIRED'] == "True")
|
|
{
|
|
// Yup.
|
|
error.setError(jsonrpc.Constant.ServerError.SessionExpired,
|
|
"Session expired");
|
|
error.setInfo(getDomainList());
|
|
return false;
|
|
}
|
|
|
|
// Are we authenticated?
|
|
if (! session.AUTHENTICATED)
|
|
{
|
|
// Nope.
|
|
error.setError(jsonrpc.Constant.ServerError.NotLoggedIn,
|
|
"Not logged in");
|
|
error.setInfo(getDomainList());
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
/*
|
|
* Return true if authentication is required for the specified method;
|
|
* false otherwise.
|
|
*/
|
|
function _authentication_required(serviceComponents, method)
|
|
{
|
|
var m = join(".", serviceComponents) + "." + method;
|
|
|
|
// See if this method requires authentication
|
|
if (m == "samba.system.login" ||
|
|
m == "samba.system.logout")
|
|
{
|
|
// Nope.
|
|
return false;
|
|
}
|
|
|
|
// Anything not listed above requires authentication
|
|
return true;
|
|
}
|
|
|
|
/*
|
|
* Local Variables:
|
|
* mode: c
|
|
* End:
|
|
*/
|
|
%>
|