WIP. User authentication on remote interface

This commit is contained in:
emeric
2014-07-09 14:25:25 +02:00
parent 3e96534e08
commit f142e457d8
12 changed files with 1591 additions and 219 deletions
+37 -16
View File
@@ -6,11 +6,18 @@ namespace Server {
RequestHandler::RequestHandler(boost::filesystem::path dbPath)
: _db( dbPath ),
_authRequestHandler(_db),
_audioCollectionRequestHandler(_db),
_mediaRequestHandler(_db)
{
}
RequestHandler::~RequestHandler()
{
// TODO manually log out user if needed?
_db.getLogin().logout();
}
bool
RequestHandler::process(const ClientMessage& request, ServerMessage& response)
{
@@ -19,30 +26,44 @@ RequestHandler::process(const ClientMessage& request, ServerMessage& response)
switch(request.type())
{
case ClientMessage_Type_AuthRequest:
break;
case ClientMessage_Type_AudioCollectionRequest:
if (request.has_audio_collection_request())
case ClientMessage::AuthRequest:
if (request.has_auth_request())
{
res = _audioCollectionRequestHandler.process(request.audio_collection_request(), *response.mutable_audio_collection_response());
res = _authRequestHandler.process(request.auth_request(), *response.mutable_auth_response());
if (res)
response.set_type( ServerMessage::AudioCollectionResponse);
response.set_type(ServerMessage::AuthResponse);
}
else
std::cerr << "Malformed AudioCollectionRequest message!" << std::endl;
std::cerr << "Bad ClientMessage::AuthRequest !" << std::endl;
break;
case ClientMessage::AudioCollectionRequest:
// Not allowed if the user is not logged in
if (_db.getLogin().loggedIn())
{
if (request.has_audio_collection_request())
{
res = _audioCollectionRequestHandler.process(request.audio_collection_request(), *response.mutable_audio_collection_response());
if (res)
response.set_type( ServerMessage::AudioCollectionResponse);
}
else
std::cerr << "Bad ClientMessage::AudioCollectionRequest message!" << std::endl;
}
break;
case ClientMessage_Type_MediaRequest:
if (request.has_media_request())
case ClientMessage::MediaRequest:
// Not allowed if the user is not logged in
if (_db.getLogin().loggedIn())
{
res = _mediaRequestHandler.process(request.media_request(), *response.mutable_media_response());
if (res)
response.set_type( ServerMessage::MediaResponse);
if (request.has_media_request())
{
res = _mediaRequestHandler.process(request.media_request(), *response.mutable_media_response());
if (res)
response.set_type( ServerMessage::MediaResponse);
}
else
std::cerr << "Malformed ClientMessage::MediaRequest message!" << std::endl;
}
else
std::cerr << "Malformed AudioCollectionRequest message!" << std::endl;
break;
break;
default: