fix: Explain why logging in will not work

This commit is contained in:
Joachim Van Herwegen 2021-08-18 16:18:07 +02:00
parent f0f59a8f27
commit a062a710bc
3 changed files with 12 additions and 6 deletions

View File

@ -227,10 +227,9 @@ export class IdentityProviderHttpHandler extends HttpHandler {
if (result.type === 'complete') { if (result.type === 'complete') {
if (!oidcInteraction) { if (!oidcInteraction) {
// Once https://github.com/solid/community-server/pull/898 is merged
// we want to assign an error code here to have a more thorough explanation
throw new BadRequestHttpError( throw new BadRequestHttpError(
'This action can only be executed as part of an authentication flow. It should not be used directly.', 'This action can only be performed as part of an OIDC authentication flow.',
{ errorCode: 'E0002' },
); );
} }
// Create a redirect URL with the OIDC library // Create a redirect URL with the OIDC library

View File

@ -0,0 +1,6 @@
# Please log in through an app
Logging in to a Solid Pod needs to happen via a Solid app.
<br>
It is not possible to use the login page directly.
If you are developing an app,
you can use a library such as [`solid-client-authn-js`](https://github.com/inrupt/solid-client-authn-js) to initiate an OIDC authentication flow.

View File

@ -160,9 +160,10 @@ describe('An IdentityProviderHttpHandler', (): void => {
expect(routes.complete.handler.handleSafe).toHaveBeenLastCalledWith({ operation }); expect(routes.complete.handler.handleSafe).toHaveBeenLastCalledWith({ operation });
expect(interactionCompleter.handleSafe).toHaveBeenCalledTimes(0); expect(interactionCompleter.handleSafe).toHaveBeenCalledTimes(0);
const error = new BadRequestHttpError( const error = expect.objectContaining({
'This action can only be executed as part of an authentication flow. It should not be used directly.', message: 'This action can only be performed as part of an OIDC authentication flow.',
); errorCode: 'E0002',
});
expect(errorHandler.handleSafe).toHaveBeenCalledTimes(1); expect(errorHandler.handleSafe).toHaveBeenCalledTimes(1);
expect(errorHandler.handleSafe).toHaveBeenLastCalledWith({ error, preferences: { type: { 'text/html': 1 }}}); expect(errorHandler.handleSafe).toHaveBeenLastCalledWith({ error, preferences: { type: { 'text/html': 1 }}});
expect(responseWriter.handleSafe).toHaveBeenCalledTimes(1); expect(responseWriter.handleSafe).toHaveBeenCalledTimes(1);