From 61c3e0cf9ac8a89ec5bc69f6e3cd2d043814b7fd Mon Sep 17 00:00:00 2001 From: Romain Lanz <2793951+RomainLanz@users.noreply.github.com> Date: Tue, 7 May 2024 14:45:00 +0200 Subject: [PATCH] refactor: new structure (#86) * docs: first draft of new structure * chore: move back to sentence casing * chore: remove .DS_Store file * chore: update casing of HTTP * chore: update GH discussions link * chore: remove bunch of redirects * chore: correct bunch of link, tables, images and code examples * chore: write lucid & edge page * chore: write deployment guide * fix(deployment): correct heading * chore(deployment): add Dockerfile * chore(deployment): remove not needed cache view directive * chore(deployment): remove ignore ts errors flag in dockerfile * chore: rename rc file to adonisrc file * chore: rename securing ssr apps * chore: rename api references to references * chore: correct redirect for rc file * chore: improve the content of quick lucid doc * fix: correct broken links --- README.md | 2 +- content/docs/ace/creating_commands.md | 4 +- content/docs/ace/prompts.md | 2 +- content/docs/ace/tui.md | 2 +- .../access_tokens_guard.md | 10 +- .../basic_auth_guard.md | 6 +- .../custom_auth_guard.md} | 2 +- .../{auth => authentication}/introduction.md | 14 +- .../{auth => authentication}/session_guard.md | 10 +- .../social_authentication.md} | 4 +- .../verifying_user_credentials.md | 10 +- .../body_parser.md} | 12 +- content/docs/{http => basics}/controllers.md | 16 +- content/docs/{http => basics}/cookies.md | 2 +- .../{http => basics}/exception_handling.md | 20 +- content/docs/{http => basics}/file_uploads.md | 42 +- content/docs/{http => basics}/middleware.md | 8 +- .../{http => basics}/middleware_flow 2.jpeg | Bin .../{http => basics}/middleware_flow.jpeg | Bin .../post_comments_resource_routes_list.png | Bin ...comments_resource_routes_list_original.png | Bin .../post_resource_routes_list.png | Bin .../post_resource_routes_list_original.png | Bin content/docs/{http => basics}/request.md | 10 +- content/docs/{http => basics}/response.md | 8 +- content/docs/{http => basics}/routing.md | 223 ++- content/docs/{http => basics}/session.md | 16 +- .../{http => basics}/shallow_routes_list.png | Bin .../shallow_routes_list_original.jpg | Bin .../{http => basics}/static_file_server.md | 4 +- content/docs/{http => basics}/validation.md | 8 +- .../vite-dev-server-original.png | Bin .../docs/{http => basics}/vite-dev-server.png | Bin .../assets_bundling.md => basics/vite.md} | 4 +- .../{http => basics}/vscode_routes_list.png | Bin .../vscode_routes_list_original.png | Bin .../adonisrc_file.md | 2 +- .../{fundamentals => concepts}/application.md | 16 +- .../application_lifecycle.md | 2 +- .../async_local_storage.md | 4 +- .../boot_phase_flow_chart.png | Bin .../boot_phase_flow_chart_original.png | Bin .../config_providers.md | 6 +- .../container_services.md | 2 +- .../dependency_injection.md} | 4 +- .../extending_the_framework.md | 34 +- .../docs/{fundamentals => concepts}/hmr.md | 0 .../docs/{http => concepts}/http_context.md | 44 +- .../http_overview.md} | 26 +- .../{fundamentals => concepts}/scaffolding.md | 20 +- .../scaffolding_workflow.png | Bin .../scaffolding_workflow_original.png | Bin .../server_boot_lifecycle.png | Bin .../server_boot_lifecycle_original.png | Bin .../service_providers.md | 10 +- .../start_phase_flow_chart.png | Bin .../start_phase_flow_chart_original.png | Bin .../termination_phase_flow_chart.png | Bin .../termination_phase_flow_chart_original.png | Bin .../tooling_config.md | 0 .../typescript_build_process.md | 12 +- content/docs/database/introduction.md | 16 + content/docs/database/lucid.md | 212 +++ content/docs/database/sql.md | 32 - content/docs/db.json | 621 ++++--- content/docs/digging_deeper/emitter.md | 14 +- content/docs/digging_deeper/i18n.md | 80 +- content/docs/digging_deeper/locks.md | 8 +- content/docs/digging_deeper/logger.md | 4 +- content/docs/digging_deeper/mail.md | 1426 +++++++++++++++++ content/docs/{ace => digging_deeper}/repl.md | 6 +- content/docs/digging_deeper/transmit.md | 2 +- content/docs/experimental/assembler_hooks.md | 4 +- content/docs/experimental/inertia.md | 14 +- content/docs/experimental/vite.md | 4 +- content/docs/fundamentals/.DS_Store | Bin 6148 -> 0 bytes content/docs/fundamentals/deployments.md | 105 -- .../configuration.md} | 4 +- content/docs/getting_started/deployment.md | 231 +++ .../env_intellisense.jpeg | Bin .../env_intellisense_original.png | Bin .../environment_variables.md} | 4 +- .../folder_structure.md | 10 +- .../installation.md | 10 +- content/docs/guides/.DS_Store | Bin 6148 -> 0 bytes content/docs/http/.DS_Store | Bin 6148 -> 0 bytes content/docs/http/url_builder.md | 186 --- content/docs/mail/class_based_mails.md | 190 --- content/docs/mail/custom_transports.md | 110 -- content/docs/mail/fake_mailer.md | 192 --- content/docs/mail/introduction.md | 509 ------ content/docs/mail/message.md | 422 ----- .../forms_and_validation/custom_messages.md | 0 .../pika-1675149043774-1x.jpeg | Bin .../forms_and_validation/schema_101.md | 0 .../validating_api_requests.md | 0 .../validating_server_rendered_forms.md | 0 .../forms_and_validation/validation.md | 6 +- .../validator-static-types.webp | Bin .../fundamentals/package_development.md | 14 +- .../{ => old}/http/assets_bundling_encore.md | 0 .../{ => old}/pages/adonisjs-at-a-glance.md | 0 content/docs/{ => old}/resources/updates.md | 0 .../tutorial/creating-new-application.md | 0 .../docs/{ => old}/tutorial/introduction.md | 0 .../{ => old}/validator/custom_messages.md | 0 .../docs/{ => old}/validator/custom_rules.md | 0 .../{ => old}/validator/error_reporters.md | 2 +- .../docs/{ => old}/validator/introduction.md | 0 .../{ => old}/validator/schema_caching.md | 0 .../docs/{ => old}/validator/schema_types.md | 0 .../{ => old}/validator/validation_rules.md | 0 content/docs/preface/contribution_guide.md | 113 ++ content/docs/{guides => preface}/faqs.md | 4 +- content/docs/preface/governance.md | 104 ++ .../docs/{guides => preface}/introduction.md | 10 +- content/docs/{guides => preface}/releases.md | 0 .../{reference => references}/commands.md | 20 +- .../docs/{reference => references}/edge.md | 20 +- .../docs/{reference => references}/events.md | 2 +- .../{reference => references}/exceptions.md | 25 +- .../docs/{reference => references}/helpers.md | 2 +- .../authorization.md | 14 +- content/docs/security/encryption.md | 2 +- content/docs/security/{hash.md => hashing.md} | 4 +- .../{rate-limiter.md => rate_limiting.md} | 12 +- ...curity.md => securing_ssr_applications.md} | 21 +- content/docs/testing/browser_tests.md | 7 +- ...{commandline_tests.md => console_tests.md} | 4 +- .../{database_tests.md => database.md} | 0 content/docs/testing/http_tests.md | 10 +- content/docs/testing/introduction.md | 16 +- content/docs/testing/mocks_and_fakes.md | 10 +- .../edgejs.md} | 37 +- .../docs/views-and-templates/introduction.md | 21 + public/_redirects | 139 +- templates/partials/introduction_cards.edge | 2 +- 137 files changed, 3131 insertions(+), 2527 deletions(-) rename content/docs/{auth => authentication}/access_tokens_guard.md (95%) rename content/docs/{auth => authentication}/basic_auth_guard.md (95%) rename content/docs/{auth/custom_auth_guards.md => authentication/custom_auth_guard.md} (98%) rename content/docs/{auth => authentication}/introduction.md (91%) rename content/docs/{auth => authentication}/session_guard.md (94%) rename content/docs/{digging_deeper/social_auth.md => authentication/social_authentication.md} (98%) rename content/docs/{auth => authentication}/verifying_user_credentials.md (94%) rename content/docs/{http/bodyparser_middleware.md => basics/body_parser.md} (95%) rename content/docs/{http => basics}/controllers.md (93%) rename content/docs/{http => basics}/cookies.md (97%) rename content/docs/{http => basics}/exception_handling.md (92%) rename content/docs/{http => basics}/file_uploads.md (78%) rename content/docs/{http => basics}/middleware.md (97%) rename content/docs/{http => basics}/middleware_flow 2.jpeg (100%) rename content/docs/{http => basics}/middleware_flow.jpeg (100%) rename content/docs/{http => basics}/post_comments_resource_routes_list.png (100%) rename content/docs/{http => basics}/post_comments_resource_routes_list_original.png (100%) rename content/docs/{http => basics}/post_resource_routes_list.png (100%) rename content/docs/{http => basics}/post_resource_routes_list_original.png (100%) rename content/docs/{http => basics}/request.md (96%) rename content/docs/{http => basics}/response.md (96%) rename content/docs/{http => basics}/routing.md (75%) rename content/docs/{http => basics}/session.md (94%) rename content/docs/{http => basics}/shallow_routes_list.png (100%) rename content/docs/{http => basics}/shallow_routes_list_original.jpg (100%) rename content/docs/{http => basics}/static_file_server.md (96%) rename content/docs/{http => basics}/validation.md (94%) rename content/docs/{http => basics}/vite-dev-server-original.png (100%) rename content/docs/{http => basics}/vite-dev-server.png (100%) rename content/docs/{http/assets_bundling.md => basics/vite.md} (98%) rename content/docs/{http => basics}/vscode_routes_list.png (100%) rename content/docs/{http => basics}/vscode_routes_list_original.png (100%) rename content/docs/{fundamentals => concepts}/adonisrc_file.md (99%) rename content/docs/{fundamentals => concepts}/application.md (96%) rename content/docs/{fundamentals => concepts}/application_lifecycle.md (99%) rename content/docs/{fundamentals => concepts}/async_local_storage.md (97%) rename content/docs/{fundamentals => concepts}/boot_phase_flow_chart.png (100%) rename content/docs/{fundamentals => concepts}/boot_phase_flow_chart_original.png (100%) rename content/docs/{fundamentals => concepts}/config_providers.md (93%) rename content/docs/{fundamentals => concepts}/container_services.md (97%) rename content/docs/{fundamentals/ioc_container.md => concepts/dependency_injection.md} (99%) rename content/docs/{fundamentals => concepts}/extending_the_framework.md (75%) rename content/docs/{fundamentals => concepts}/hmr.md (100%) rename content/docs/{http => concepts}/http_context.md (83%) rename content/docs/{http/introduction.md => concepts/http_overview.md} (79%) rename content/docs/{fundamentals => concepts}/scaffolding.md (94%) rename content/docs/{fundamentals => concepts}/scaffolding_workflow.png (100%) rename content/docs/{fundamentals => concepts}/scaffolding_workflow_original.png (100%) rename content/docs/{http => concepts}/server_boot_lifecycle.png (100%) rename content/docs/{http => concepts}/server_boot_lifecycle_original.png (100%) rename content/docs/{fundamentals => concepts}/service_providers.md (90%) rename content/docs/{fundamentals => concepts}/start_phase_flow_chart.png (100%) rename content/docs/{fundamentals => concepts}/start_phase_flow_chart_original.png (100%) rename content/docs/{fundamentals => concepts}/termination_phase_flow_chart.png (100%) rename content/docs/{fundamentals => concepts}/termination_phase_flow_chart_original.png (100%) rename content/docs/{fundamentals => concepts}/tooling_config.md (100%) rename content/docs/{fundamentals => concepts}/typescript_build_process.md (94%) create mode 100644 content/docs/database/introduction.md create mode 100644 content/docs/database/lucid.md delete mode 100644 content/docs/database/sql.md create mode 100644 content/docs/digging_deeper/mail.md rename content/docs/{ace => digging_deeper}/repl.md (94%) delete mode 100644 content/docs/fundamentals/.DS_Store delete mode 100644 content/docs/fundamentals/deployments.md rename content/docs/{guides/config.md => getting_started/configuration.md} (96%) create mode 100644 content/docs/getting_started/deployment.md rename content/docs/{guides => getting_started}/env_intellisense.jpeg (100%) rename content/docs/{guides => getting_started}/env_intellisense_original.png (100%) rename content/docs/{guides/env.md => getting_started/environment_variables.md} (98%) rename content/docs/{guides => getting_started}/folder_structure.md (93%) rename content/docs/{guides => getting_started}/installation.md (95%) delete mode 100644 content/docs/guides/.DS_Store delete mode 100644 content/docs/http/.DS_Store delete mode 100644 content/docs/http/url_builder.md delete mode 100644 content/docs/mail/class_based_mails.md delete mode 100644 content/docs/mail/custom_transports.md delete mode 100644 content/docs/mail/fake_mailer.md delete mode 100644 content/docs/mail/introduction.md delete mode 100644 content/docs/mail/message.md rename content/docs/{ => old}/forms_and_validation/custom_messages.md (100%) rename content/docs/{ => old}/forms_and_validation/pika-1675149043774-1x.jpeg (100%) rename content/docs/{ => old}/forms_and_validation/schema_101.md (100%) rename content/docs/{ => old}/forms_and_validation/validating_api_requests.md (100%) rename content/docs/{ => old}/forms_and_validation/validating_server_rendered_forms.md (100%) rename content/docs/{ => old}/forms_and_validation/validation.md (92%) rename content/docs/{ => old}/forms_and_validation/validator-static-types.webp (100%) rename content/docs/{ => old}/fundamentals/package_development.md (87%) rename content/docs/{ => old}/http/assets_bundling_encore.md (100%) rename content/docs/{ => old}/pages/adonisjs-at-a-glance.md (100%) rename content/docs/{ => old}/resources/updates.md (100%) rename content/docs/{ => old}/tutorial/creating-new-application.md (100%) rename content/docs/{ => old}/tutorial/introduction.md (100%) rename content/docs/{ => old}/validator/custom_messages.md (100%) rename content/docs/{ => old}/validator/custom_rules.md (100%) rename content/docs/{ => old}/validator/error_reporters.md (98%) rename content/docs/{ => old}/validator/introduction.md (100%) rename content/docs/{ => old}/validator/schema_caching.md (100%) rename content/docs/{ => old}/validator/schema_types.md (100%) rename content/docs/{ => old}/validator/validation_rules.md (100%) create mode 100644 content/docs/preface/contribution_guide.md rename content/docs/{guides => preface}/faqs.md (93%) create mode 100644 content/docs/preface/governance.md rename content/docs/{guides => preface}/introduction.md (83%) rename content/docs/{guides => preface}/releases.md (100%) rename content/docs/{reference => references}/commands.md (93%) rename content/docs/{reference => references}/edge.md (80%) rename content/docs/{reference => references}/events.md (98%) rename content/docs/{reference => references}/exceptions.md (86%) rename content/docs/{reference => references}/helpers.md (99%) rename content/docs/{digging_deeper => security}/authorization.md (95%) rename content/docs/security/{hash.md => hashing.md} (98%) rename content/docs/security/{rate-limiter.md => rate_limiting.md} (97%) rename content/docs/security/{web-security.md => securing_ssr_applications.md} (94%) rename content/docs/testing/{commandline_tests.md => console_tests.md} (98%) rename content/docs/testing/{database_tests.md => database.md} (100%) rename content/docs/{http/views_and_templates.md => views-and-templates/edgejs.md} (52%) create mode 100644 content/docs/views-and-templates/introduction.md diff --git a/README.md b/README.md index d3391a10..1b20ac03 100644 --- a/README.md +++ b/README.md @@ -120,7 +120,7 @@ A typical database entry has the following properties. { "permalink": "introduction", "title": "Introduction", - "contentPath": "./introduction.md", + "contentPath": "./http_overview.md", "category": "Guides" } ``` diff --git a/content/docs/ace/creating_commands.md b/content/docs/ace/creating_commands.md index cbe67d40..e515527d 100644 --- a/content/docs/ace/creating_commands.md +++ b/content/docs/ace/creating_commands.md @@ -2,7 +2,7 @@ Alongside using Ace commands, you may also create custom commands as part of your application codebase. The commands are stored inside the `commands` directory (at the root level). You may create a command by running the following command. -See also: [Make command](../reference/commands.md#makecommand) +See also: [Make command](../references/commands.md#makecommand) ```sh node ace make:command greet @@ -229,7 +229,7 @@ export default class GreetCommand extends BaseCommand { ## Dependency injection -Ace commands are constructed and executed using the [IoC container](../fundamentals/ioc_container.md). Therefore, you can type-hint dependencies on command lifecycle methods and use the `@inject` decorator to resolve them. +Ace commands are constructed and executed using the [IoC container](../../concepts/dependency_injection). Therefore, you can type-hint dependencies on command lifecycle methods and use the `@inject` decorator to resolve them. For demonstration, let's inject the `UserService` class in all the lifecycle methods. diff --git a/content/docs/ace/prompts.md b/content/docs/ace/prompts.md index 4a546b0c..fa5d7c3e 100644 --- a/content/docs/ace/prompts.md +++ b/content/docs/ace/prompts.md @@ -13,7 +13,7 @@ Prompts are interactive terminal widgets you can use to accept user input. Ace p Ace prompts are built with testing in mind. When writing tests, you may trap prompts and respond to them programmatically. -See also: [Testing ace commands](../testing/commandline_tests.md) +See also: [Testing ace commands](../../testing/console_tests) ## Displaying a prompt diff --git a/content/docs/ace/tui.md b/content/docs/ace/tui.md index 7268919f..5aacd7bd 100644 --- a/content/docs/ace/tui.md +++ b/content/docs/ace/tui.md @@ -4,7 +4,7 @@ Ace terminal UI is powered by the [@poppinss/cliui](https://github.com/poppinss/ The terminal UI primitives are built with testing in mind. When writing tests, you may turn on the `raw` mode to disable colors and formatting and collect all logs in memory to write assertions against them. -See also: [Testing Ace commands](../testing/commandline_tests.md) +See also: [Testing Ace commands](../../testing/console_tests) ## Displaying log messages diff --git a/content/docs/auth/access_tokens_guard.md b/content/docs/authentication/access_tokens_guard.md similarity index 95% rename from content/docs/auth/access_tokens_guard.md rename to content/docs/authentication/access_tokens_guard.md index 4966c442..21e2019d 100644 --- a/content/docs/auth/access_tokens_guard.md +++ b/content/docs/authentication/access_tokens_guard.md @@ -178,7 +178,7 @@ In the following example, we **find a user by id** and **issue them an access to The `.create` method accepts an instance of the User model and returns an instance of the [AccessToken](https://github.com/adonisjs/auth/blob/main/modules/access_tokens_guard/access_token.ts) class. -The `token.value` property contains the value (wrapped as a [Secret](../reference/helpers.md#secret)) that must be shared with the user. The value is only available when generating the token, and the user will not be able to see it again. +The `token.value` property contains the value (wrapped as a [Secret](../references/helpers.md#secret)) that must be shared with the user. The value is only available when generating the token, and the user will not be able to see it again. ```ts import router from '@adonisjs/core/services/router' @@ -235,7 +235,7 @@ await User.accessTokens.create(user, ['server:create', 'server:read']) ### Token abilities vs. Bouncer abilities -You should not confuse token abilities with [bouncer authorization checks](../digging_deeper/authorization.md#defining-abilities). Let's try to understand the difference with a practical example. +You should not confuse token abilities with [bouncer authorization checks](../security/authorization.md#defining-abilities). Let's try to understand the difference with a practical example. - Let's say you define a **bouncer ability that allows admin users to create new projects**. @@ -341,7 +341,7 @@ The `tokensUserProvider` method accepts the following options and returns an ins ## Authenticating requests Once the guard has been configured, you can start authenticating requests using the `auth` middleware or manually calling the `auth.authenticate` method. -The `auth.authenticate` method returns an instance of the User model for the authenticated user, or it throws an [E_UNAUTHORIZED_ACCESS](../reference/exceptions.md#e_unauthorized_access) exception when unable to authenticate the request. +The `auth.authenticate` method returns an instance of the User model for the authenticated user, or it throws an [E_UNAUTHORIZED_ACCESS](../references/exceptions.md#e_unauthorized_access) exception when unable to authenticate the request. ```ts import router from '@adonisjs/core/services/router' @@ -393,7 +393,7 @@ class PostsController { ### Get authenticated user or fail -If you do not like using the [non-null assertion operator](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#non-null-assertion-operator-postfix-) on the `auth.user` property, you may use the `auth.getUserOrFail` method. This method will return the user object or throw [E_UNAUTHORIZED_ACCESS](../reference/exceptions.md#e_unauthorized_access) exception. +If you do not like using the [non-null assertion operator](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#non-null-assertion-operator-postfix-) on the `auth.user` property, you may use the `auth.getUserOrFail` method. This method will return the user object or throw [E_UNAUTHORIZED_ACCESS](../references/exceptions.md#e_unauthorized_access) exception. ```ts import { HttpContext } from '@adonisjs/core/http' @@ -483,4 +483,4 @@ await User.accessTokens.delete(user, token.identifier) ``` ## Events -Please check the [events reference guide](../reference/events.md#access_tokens_authauthentication_attempted) to view the list of available events emitted by the access tokens guard. +Please check the [events reference guide](../references/events.md#access_tokens_authauthentication_attempted) to view the list of available events emitted by the access tokens guard. diff --git a/content/docs/auth/basic_auth_guard.md b/content/docs/authentication/basic_auth_guard.md similarity index 95% rename from content/docs/auth/basic_auth_guard.md rename to content/docs/authentication/basic_auth_guard.md index 231fb0ff..a0d3f332 100644 --- a/content/docs/auth/basic_auth_guard.md +++ b/content/docs/authentication/basic_auth_guard.md @@ -1,4 +1,4 @@ -# Basic authentication +# Basic authentication guard The basic auth guard is an implementation of the [HTTP authentication framework](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication), in which the client must pass the user credentials as a base64 encoded string via the `Authorization` header. The server allows the request if the credentials are valid. Otherwise, a web-native prompt is displayed to re-enter the credentials. @@ -33,7 +33,7 @@ The `basicAuthUserProvider` method creates an instance of the [BasicAuthLucidUse ## Preparing the User model -The model (`User` model in this example) configured with the `basicAuthUserProvider` must use the [AuthFinder](./verifying_user_credentials.md#using-the-auth-finder-mixin) mixin to verify the user credentials during authentication. +The model (`User` model in this example) configured with the `basicAuthUserProvider` must use the [AuthFinder](verifying_user_credentials.md#using-the-auth-finder-mixin) mixin to verify the user credentials during authentication. ```ts import { DateTime } from 'luxon' @@ -123,7 +123,7 @@ router ``` ### Get authenticated user or fail -If you do not like using the [non-null assertion operator](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#non-null-assertion-operator-postfix-) on the `auth.user` property, you may use the `auth.getUserOrFail` method. This method will return the user object or throw [E_UNAUTHORIZED_ACCESS](../reference/exceptions.md#e_unauthorized_access) exception. +If you do not like using the [non-null assertion operator](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#non-null-assertion-operator-postfix-) on the `auth.user` property, you may use the `auth.getUserOrFail` method. This method will return the user object or throw [E_UNAUTHORIZED_ACCESS](../references/exceptions.md#e_unauthorized_access) exception. ```ts import { middleware } from '#start/kernel' diff --git a/content/docs/auth/custom_auth_guards.md b/content/docs/authentication/custom_auth_guard.md similarity index 98% rename from content/docs/auth/custom_auth_guards.md rename to content/docs/authentication/custom_auth_guard.md index 44fa6a83..e0fa920c 100644 --- a/content/docs/auth/custom_auth_guards.md +++ b/content/docs/authentication/custom_auth_guard.md @@ -247,7 +247,7 @@ Authenticating a request includes: - Verifying its authenticity. - Fetching the user for whom the token was generated. -Our guard will need access to the [HttpContext](../http/http_context.md) to read request headers and cookies, so let's update the class `constructor` and accept it as an argument. +Our guard will need access to the [HttpContext](../concepts/http_context.md) to read request headers and cookies, so let's update the class `constructor` and accept it as an argument. ```ts // insert-start diff --git a/content/docs/auth/introduction.md b/content/docs/authentication/introduction.md similarity index 91% rename from content/docs/auth/introduction.md rename to content/docs/authentication/introduction.md index c4e8eb90..75bba793 100644 --- a/content/docs/auth/introduction.md +++ b/content/docs/authentication/introduction.md @@ -22,7 +22,7 @@ The auth package narrowly focuses on authenticating HTTP requests, and the follo - User registration features like **registration forms**, **email verification**, and **account activation**. - Account management features like **password recovery** or **email update**. -- Assigning roles or verifying permissions. Instead, [use bouncer](../digging_deeper/authorization.md) to implement authorization checks in your application. +- Assigning roles or verifying permissions. Instead, [use bouncer](../security/authorization.md) to implement authorization checks in your application.