Errors::Code DefaultClientAuthorizationFacade::processAuthorizationRequest(const IHttpRequest& request, IHttpResponse &response) const { if (!request.isParamExist(_acceptedFieldName)) { make_error_response(Errors::Code::access_denied, "user denided access to client", request, response); return Errors::Code::access_denied; } if (!request.isParamExist(_userIdFieldName) || !request.isParamExist(Params::client_id) || !request.isParamExist(Params::scope)) { make_error_response(Errors::Code::invalid_request, "no one or more required parameters user_id, client_id, scope", request, response); return Errors::Code::access_denied; } Grant grant(request.getParam(_userIdFieldName), request.getParam(Params::client_id), request.getParam(Params::scope)); ServiceLocator::instance()->Storage->saveGrant(grant); //HACK: should use POST UserAuthenticationFacadeMock::_originalRequestFieldName parameter response.addHeader("Location", request.getHeader("Referer")); response.setStatus(302); return Errors::ok; };
void make_error_response(const Errors::Code error, const string &msg, const IHttpRequest &request, IHttpResponse &response) { typedef std::pair<string, string> jsonpair_t; response.setStatus(400); response.addHeader("Content-type","application/json; charset=utf-8"); std::map<string, string> map; map.insert(jsonpair_t(Params::error,Errors::getText(error))); map.insert(jsonpair_t(Params::error_description,msg)); response.setBody(mapToJSON(map)); };