From a6fd997c338554da60f44f6200878ae5d944ce99 Mon Sep 17 00:00:00 2001 From: kenjis Date: Wed, 1 Feb 2023 11:38:23 +0900 Subject: [PATCH 01/39] docs: add @return --- src/Models/UserModel.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Models/UserModel.php b/src/Models/UserModel.php index 91ed28948..1587b7b9e 100644 --- a/src/Models/UserModel.php +++ b/src/Models/UserModel.php @@ -261,6 +261,8 @@ public function insert($data = null, bool $returnID = true) * @param array|int|string|null $id * @param array|User $data * + * @return true if the update is successful + * * @throws ValidationException */ public function update($id = null, $data = null): bool @@ -301,6 +303,8 @@ public function update($id = null, $data = null): bool * * @param array|User $data * + * @return true if the save is successful + * * @throws ValidationException */ public function save($data): bool From 39f1a5814e62d70935122e58f39305fe2ee9aa35 Mon Sep 17 00:00:00 2001 From: kenjis Date: Thu, 19 Jan 2023 09:51:39 +0900 Subject: [PATCH 02/39] docs: make file paths bold --- docs/authentication.md | 2 +- docs/authorization.md | 2 +- docs/events.md | 2 +- docs/guides/api_tokens.md | 4 ++-- docs/guides/mobile_apps.md | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/authentication.md b/docs/authentication.md index 3fdffe352..4eeef20bc 100644 --- a/docs/authentication.md +++ b/docs/authentication.md @@ -65,7 +65,7 @@ user_id(); > **Note** > The `auth_helper` is autoloaded by Composer. If you want to *override* the functions, -> you need to define them in `app/Common.php`. +> you need to define them in **app/Common.php**. ## Authenticator Responses diff --git a/docs/authorization.md b/docs/authorization.md index 6f4923f96..6c9a67d94 100644 --- a/docs/authorization.md +++ b/docs/authorization.md @@ -132,7 +132,7 @@ if (! $user->hasPermission('users.create')) { #### Authorizing via Filters -You can restrict access to multiple routes through a [Controller Filter](https://codeigniter.com/user_guide/incoming/filters.html). One is provided for both restricting via groups the user belongs to, as well as which permission they need. The filters are automatically registered with the system under the `group` and `permission` aliases, respectively. You can define the protections within `app/Config/Filters.php`: +You can restrict access to multiple routes through a [Controller Filter](https://codeigniter.com/user_guide/incoming/filters.html). One is provided for both restricting via groups the user belongs to, as well as which permission they need. The filters are automatically registered with the system under the `group` and `permission` aliases, respectively. You can define the protections within **app/Config/Filters.php**: ```php public $filters = [ diff --git a/docs/events.md b/docs/events.md index 0166cb246..0fd544153 100644 --- a/docs/events.md +++ b/docs/events.md @@ -14,7 +14,7 @@ Shield fires off several events during the lifecycle of the application that you ## Responding to Events -When you want to respond to an event that Shield publishes, you will need to add it to your `app/Config/Events.php` +When you want to respond to an event that Shield publishes, you will need to add it to your **app/Config/Events.php** file. Each of the following events provides a sample for responding that uses a class and method name. Other methods are available. See the [CodeIgniter 4 User Guide](https://codeigniter.com/user_guide/extending/events.html) for more information. diff --git a/docs/guides/api_tokens.md b/docs/guides/api_tokens.md index ff99494cc..ed9dee901 100644 --- a/docs/guides/api_tokens.md +++ b/docs/guides/api_tokens.md @@ -2,7 +2,7 @@ Access Tokens can be used to authenticate users for your own site, or when allowing third-party developers to access your API. When making requests using access tokens, the token should be included in the `Authorization` header as a `Bearer` token. -> **Note** By default, `$authenticatorHeader['tokens']` is set to `Authorization`. You can change this value by setting the `$authenticatorHeader['tokens']` value in the `Auth.php` config file. +> **Note** By default, `$authenticatorHeader['tokens']` is set to `Authorization`. You can change this value by setting the `$authenticatorHeader['tokens']` value in the **app/Config/Auth.php** config file. Tokens are issued with the `generateAccessToken()` method on the user. This returns a `CodeIgniter\Shield\Entities\AccessToken` instance. Tokens are hashed using a SHA-256 algorithm before being saved to the database. The access token returned when you generate it will include a `raw_token` field that contains the plain-text, un-hashed, token. You should display this to your user at once so they have a chance to copy it somewhere safe, as this is the only time this will be available. After this request, there is no way to get the raw token. @@ -57,7 +57,7 @@ $user->revokeAllAccessTokens(); The first way to specify which routes are protected is to use the `tokens` controller filter. -For example, to ensure it protects all routes under the `/api` route group, you would use the `$filters` setting on `app/Config/Filters.php`. +For example, to ensure it protects all routes under the `/api` route group, you would use the `$filters` setting on **app/Config/Filters.php**. ```php public $filters = [ diff --git a/docs/guides/mobile_apps.md b/docs/guides/mobile_apps.md index 4f8f6829f..5fe7d025b 100644 --- a/docs/guides/mobile_apps.md +++ b/docs/guides/mobile_apps.md @@ -61,6 +61,6 @@ When making all future requests to the API, the mobile client should return the > **Note** > -> By default, `$authenticatorHeader['tokens']` is set to `Authorization`. You can change the header name by setting the `$authenticatorHeader['tokens']` value in the `Auth.php` config file. +> By default, `$authenticatorHeader['tokens']` is set to `Authorization`. You can change the header name by setting the `$authenticatorHeader['tokens']` value in the **app/Config/Auth.php** config file. > > e.g. if `$authenticatorHeader['tokens']` is set to `PersonalAccessCodes` then the mobile client should return the raw token in the `PersonalAccessCodes` header as a `Bearer` token. From 0503832d694f6c681678b706e9c4b7ff17c050d6 Mon Sep 17 00:00:00 2001 From: kenjis Date: Thu, 19 Jan 2023 09:52:01 +0900 Subject: [PATCH 03/39] docs: fix link to other page --- docs/guides/mobile_apps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/mobile_apps.md b/docs/guides/mobile_apps.md index 5fe7d025b..bece95b2a 100644 --- a/docs/guides/mobile_apps.md +++ b/docs/guides/mobile_apps.md @@ -1,6 +1,6 @@ # Mobile Authentication with Access Tokens -Access Tokens can be used to authenticate mobile applications that are consuming your API. This is similar to how you would work with [third-party users](api_tokens.md) of your API, but with small differences in how you would issue the tokens. +Access Tokens can be used to authenticate mobile applications that are consuming your API. This is similar to how you would work with [third-party users](./api_tokens.md) of your API, but with small differences in how you would issue the tokens. ## Issuing the Tokens From cf23c47cffb374f6db384cf948e18bc3e878633f Mon Sep 17 00:00:00 2001 From: kenjis Date: Thu, 19 Jan 2023 09:52:36 +0900 Subject: [PATCH 04/39] docs: fix property notation --- docs/authorization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/authorization.md b/docs/authorization.md index 6c9a67d94..6d3d5e20e 100644 --- a/docs/authorization.md +++ b/docs/authorization.md @@ -50,7 +50,7 @@ group elsewhere, like checking if `$user->inGroup('superadmin')`. By default, th ### Default User Group When a user is first registered on the site, they are assigned to a default user group. This group is defined in -`app/config/AuthGroups::defaultGroup`, and must match the name of one of the defined groups. +`Config\AuthGroups::$defaultGroup`, and must match the name of one of the defined groups. ```php public $defaultGroup = 'users'; From 157bc79c1feef6d33dccf2a43c0884373a4b6202 Mon Sep 17 00:00:00 2001 From: kenjis Date: Thu, 19 Jan 2023 10:49:46 +0900 Subject: [PATCH 05/39] docs: make file paths bold --- docs/install.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/install.md b/docs/install.md index 9634e7672..2bbb9b30d 100644 --- a/docs/install.md +++ b/docs/install.md @@ -73,7 +73,7 @@ Require it with an explicit version constraint allowing its desired stability. php spark shield:setup ``` -2. Configure `app/Config/Email.php` to allow Shield to send emails with the [Email Class](https://codeigniter.com/user_guide/libraries/email.html). +2. Configure **app/Config/Email.php** to allow Shield to send emails with the [Email Class](https://codeigniter.com/user_guide/libraries/email.html). ```php routes($routes); @@ -159,7 +159,7 @@ your project. 1. Use InnoDB, not MyISAM. -6. Configure `app/Config/Email.php` to allow Shield to send emails. +6. Configure **app/Config/Email.php** to allow Shield to send emails. ```php **Note** If you have grouped or changed the default format of the routes, ensure that your code matches the new format(s) in the `App/Config/Filter.php` file. +> **Note** If you have grouped or changed the default format of the routes, ensure that your code matches the new format(s) in the **app/Config/Filter.php** file. For example, if you configured your routes like so: @@ -260,4 +260,4 @@ public $globals = [ ] ] ``` -The same should apply for the Rate Limiting. \ No newline at end of file +The same should apply for the Rate Limiting. From 9bb5ffa0139e4bb5cf6db839325ec6eca3851f0d Mon Sep 17 00:00:00 2001 From: kenjis Date: Thu, 19 Jan 2023 10:54:53 +0900 Subject: [PATCH 06/39] docs: make file paths bold --- docs/install.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/install.md b/docs/install.md index 2bbb9b30d..233cd8e84 100644 --- a/docs/install.md +++ b/docs/install.md @@ -12,7 +12,7 @@ - [Protect All Pages](#protect-all-pages) - [Rate Limiting](#rate-limiting) -These instructions assume that you have already [installed the CodeIgniter 4 app starter](https://codeigniter.com/user_guide/installation/installing_composer.html) as the basis for your new project, set up your `.env` file, and created a database that you can access via the Spark CLI script. +These instructions assume that you have already [installed the CodeIgniter 4 app starter](https://codeigniter.com/user_guide/installation/installing_composer.html) as the basis for your new project, set up your **.env** file, and created a database that you can access via the Spark CLI script. ## Requirements @@ -103,7 +103,7 @@ Require it with an explicit version constraint allowing its desired stability. There are a few setup items to do before you can start using Shield in your project. -1. Copy the `Auth.php` and `AuthGroups.php` from `vendor/codeigniter4/shield/src/Config/` into your project's config folder and update the namespace to `Config`. You will also need to have these classes extend the original classes. See the example below. These files contain all of the settings, group, and permission information for your application and will need to be modified to meet the needs of your site. +1. Copy the **Auth.php** and **AuthGroups.php** from **vendor/codeigniter4/shield/src/Config/** into your project's config folder and update the namespace to `Config`. You will also need to have these classes extend the original classes. See the example below. These files contain all of the settings, group, and permission information for your application and will need to be modified to meet the needs of your site. ```php // new file - app/Config/Auth.php @@ -140,7 +140,7 @@ your project. service('auth')->routes($routes); ``` -4. **Security Setup** Set `Config\Security::$csrfProtection` to `'session'` (or set `security.csrfProtection = session` in your `.env` file) for security reasons, if you use Session Authenticator. +4. **Security Setup** Set `Config\Security::$csrfProtection` to `'session'` (or set `security.csrfProtection = session` in your **.env** file) for security reasons, if you use Session Authenticator. 5. **Migration** Run the migrations. @@ -152,7 +152,7 @@ your project. When you run `spark migrate --all`, if you get `Class "SQLite3" not found` error: - 1. Remove sample migration files in `tests/_support/Database/Migrations/` + 1. Remove sample migration files in **tests/_support/Database/Migrations/** 2. Or install `sqlite3` php extension If you get `Specified key was too long` error: @@ -209,7 +209,7 @@ permission | Checks if the user has the passed permissions. These can be used in any of the [normal filter config settings](https://codeigniter.com/user_guide/incoming/filters.html?highlight=filter#globals), or [within the routes file](https://codeigniter.com/user_guide/incoming/routing.html?highlight=routs#applying-filters). -> **Note** These filters are already loaded for you by the registrar class located at `src/Config/Registrar.php`. +> **Note** These filters are already loaded for you by the registrar class located at **src/Config/Registrar.php**. ### Protect All Pages From 20049a6694cde7ad2df895a39f63ffa6d544a2dd Mon Sep 17 00:00:00 2001 From: kenjis Date: Thu, 19 Jan 2023 10:55:41 +0900 Subject: [PATCH 07/39] docs: make URLs linkable mkdocs needs <> plain URL. --- docs/install.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/install.md b/docs/install.md index 233cd8e84..34f0304ef 100644 --- a/docs/install.md +++ b/docs/install.md @@ -54,14 +54,14 @@ Require it with an explicit version constraint allowing its desired stability. ``` The above specifies `develop` branch. - See https://getcomposer.org/doc/articles/versions.md#branches + See ```console composer require codeigniter4/shield:^1.0.0-beta ``` The above specifies `v1.0.0-beta` or later and before `v2.0.0`. - See https://getcomposer.org/doc/articles/versions.md#caret-version-range- + See ## Initial Setup From 7ad45c64d524b13447bcde50e03cf40c4ee47768 Mon Sep 17 00:00:00 2001 From: kenjis Date: Thu, 19 Jan 2023 10:56:31 +0900 Subject: [PATCH 08/39] docs: add () after method name --- docs/install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install.md b/docs/install.md index 34f0304ef..4b9b786db 100644 --- a/docs/install.md +++ b/docs/install.md @@ -120,7 +120,7 @@ your project. } ``` -2. **Helper Setup** The `setting` helper needs to be included in almost every page. The simplest way to do this is to add it to the `BaseController::initController` method: +2. **Helper Setup** The `setting` helper needs to be included in almost every page. The simplest way to do this is to add it to the `BaseController::initController()` method: ```php public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) From b0cb31ec7d540a40fc303de8ac608ba735c3f835 Mon Sep 17 00:00:00 2001 From: kenjis Date: Thu, 19 Jan 2023 11:09:35 +0900 Subject: [PATCH 09/39] docs: remove unneeded ?highlight in URLs --- docs/install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install.md b/docs/install.md index 4b9b786db..00c2de9ba 100644 --- a/docs/install.md +++ b/docs/install.md @@ -207,7 +207,7 @@ auth-rates | Provides a good basis for rate limiting of auth-related routes. group | Checks if the user is in one of the groups passed in. permission | Checks if the user has the passed permissions. -These can be used in any of the [normal filter config settings](https://codeigniter.com/user_guide/incoming/filters.html?highlight=filter#globals), or [within the routes file](https://codeigniter.com/user_guide/incoming/routing.html?highlight=routs#applying-filters). +These can be used in any of the [normal filter config settings](https://codeigniter.com/user_guide/incoming/filters.html#globals), or [within the routes file](https://codeigniter.com/user_guide/incoming/routing.html#applying-filters). > **Note** These filters are already loaded for you by the registrar class located at **src/Config/Registrar.php**. From 9981e4e66941dce12f4d9360e50297d3bf83b1bc Mon Sep 17 00:00:00 2001 From: kenjis Date: Thu, 19 Jan 2023 16:48:14 +0900 Subject: [PATCH 10/39] docs: remove unsupported code sample $filters cannot set filer aruguments. --- docs/authorization.md | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/docs/authorization.md b/docs/authorization.md index 6d3d5e20e..977884adc 100644 --- a/docs/authorization.md +++ b/docs/authorization.md @@ -9,7 +9,6 @@ - [can()](#can) - [inGroup()](#ingroup) - [hasPermission()](#haspermission) - - [Authorizing via Filters](#authorizing-via-filters) - [Authorizing via Routes](#authorizing-via-routes) - [Managing User Permissions](#managing-user-permissions) - [addPermission()](#addpermission) @@ -130,28 +129,34 @@ if (! $user->hasPermission('users.create')) { } ``` -#### Authorizing via Filters +#### Authorizing via Routes -You can restrict access to multiple routes through a [Controller Filter](https://codeigniter.com/user_guide/incoming/filters.html). One is provided for both restricting via groups the user belongs to, as well as which permission they need. The filters are automatically registered with the system under the `group` and `permission` aliases, respectively. You can define the protections within **app/Config/Filters.php**: +You can restrict access to a route or route group through a +[Controller Filter](https://codeigniter.com/user_guide/incoming/filters.html). -```php -public $filters = [ - 'group:admin,superadmin' => ['before' => ['admin/*']], - 'permission:users.manage' => ['before' => ['admin/users/*']], -]; -``` +One is provided for restricting via groups the user belongs to, the other +is for permission they need. The filters are automatically registered with the +system under the `group` and `permission` aliases, respectively. -#### Authorizing via Routes - -The filters can also be used on a route or route group level: +You can set the filters within **app/Config/Routes.php**: ```php $routes->group('admin', ['filter' => 'group:admin,superadmin'], static function ($routes) { - $routes->resource('users'); + $routes->group( + '', + ['filter' => ['group:admin,superadmin', 'permission:users.manage']], + static function ($routes) { + $routes->resource('users'); + } + ); }); - ``` +Note that the options (`filter`) passed to the outer `group()` are not merged with the inner `group()` options. + +> **Note** If you set more than one filter to a route, you need to enable +> [Multiple Filters](https://codeigniter.com/user_guide/incoming/routing.html#multiple-filters). + ## Managing User Permissions Permissions can be granted on a user level as well as on a group level. Any user-level permissions granted will From 66fde87995d61a07974f6a662020e495ac8c35d0 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Tue, 31 Jan 2023 20:30:43 -0300 Subject: [PATCH 11/39] translate pt-br Signed-off-by: caosdp-rs --- src/Language/pt-br/Auth.php | 100 ++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 src/Language/pt-br/Auth.php diff --git a/src/Language/pt-br/Auth.php b/src/Language/pt-br/Auth.php new file mode 100644 index 000000000..bcceac58e --- /dev/null +++ b/src/Language/pt-br/Auth.php @@ -0,0 +1,100 @@ + '{0} não é um autenticador válido.', + 'unknownUserProvider' => 'Não foi possível determinar o provedor de usuário a ser usado.', + 'invalidUser' => 'Não foi possível localizar o usuário especificado.', + 'badAttempt' => 'Não foi possível fazer login. Por favor, verifique suas credenciais.', + 'noPassword' => 'Não é possível validar um usuário sem uma senha.', + 'invalidPassword' => 'Não foi possível fazer login. Por favor, verifique sua senha.', + 'noToken' => 'Toda requisição deve ter um token portador no cabeçalho {0}.', + 'badToken' => 'O token de acesso é inválido.', + 'oldToken' => 'O token de acesso expirou.', + 'noUserEntity' => 'A entidade de usuário deve ser fornecida para validação de senha.', + 'invalidEmail' => 'Não foi possível verificar se o endereço de email corresponde ao e-mail registrado.', + 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para "{0}".', + 'throttled' => 'Muitas solicitações feitas a partir deste endereço IP. Você pode tentar novamente em {0} segundos.', + 'notEnoughPrivilege' => 'Você não tem a permissão necessária para realizar a operação desejada.', + + 'email' => 'Endereço de Email', + 'username' => 'Nome de usuário', + 'password' => 'Senha', + 'passwordConfirm' => 'Senha (novamente)', + 'haveAccount' => 'Já tem uma conta?', + + // Botões + 'confirm' => 'Confirmar', + 'send' => 'Enviar', + + // Registro + 'register' => 'Registrar', + 'registerDisabled' => 'O registro não está permitido no momento.', + 'registerSuccess' => 'Bem-vindo a bordo!', + + // Login + 'login' => 'Login', + 'needAccount' => 'Precisa de uma conta?', + 'rememberMe' => 'Lembrar de mim?', + 'forgotPassword' => 'Esqueceu sua senha?', + 'useMagicLink' => 'Use um Link de Login', + 'magicLinkSubject' => 'Seu Link de Login', + 'magicTokenNotFound' => 'Não foi possível verificar o link.', + 'magicLinkExpired' => 'Desculpe, o link expirou.', + 'checkYourEmail' => 'Verifique seu e-mail!', + 'magicLinkDetails' => 'Acabamos de enviar um e-mail com um link de Login. Ele é válido apenas por {0} minutos.', + 'successLogout' => 'Você saiu com sucesso.', + + // Senhas + 'errorPasswordLength' => 'As senhas devem ter pelo menos {0, number} caracteres.', + 'suggestPasswordLength' => 'Frases de senha - até 255 caracteres - criam senhas mais seguras que são fáceis de lembrar.', + 'errorPasswordCommon' => 'A senha não deve ser uma senha comum.', + 'suggestPasswordCommon' => 'A senha foi verificada contra mais de 65k senhas comuns ou senhas que foram vazadas por invasões.', + 'errorPasswordPersonal' => 'As senhas não podem conter informações pessoais re-criptografadas.', + 'suggestPasswordPersonal' => 'Variações do seu endereço de e-mail ou nome de usuário não devem ser usadas como senhas.', + 'errorPasswordTooSimilar' => 'A senha é muito semelhante ao nome de usuário.', + 'suggestPasswordTooSimilar' => 'Não use partes do seu nome de usuário na sua senha.', + 'errorPasswordPwned' => 'A senha {0} foi exposta devido a uma violação de dados e foi vista {1, number} vezes em {2} de senhas comprometidas.', + 'suggestPasswordPwned' => '{0} nunca deve ser usado como uma senha. Se você estiver usando em algum lugar, altere imediatamente.', + 'errorPasswordEmpty' => 'É necessária uma senha.', + 'passwordChangeSuccess' => 'Senha alterada com sucesso', + 'userDoesNotExist' => 'Senha não foi alterada. Usuário não existe', + 'resetTokenExpired' => 'Desculpe. Seu token de redefinição expirou.', + + // E-mails Globais + 'emailInfo' => 'Algumas informações sobre a pessoa:', + 'emailIpAddress' => 'Endereço IP:', + + "emailDevice" => "Dispositivo:", + "emailDate" => "Data:", + + // 2FA + "email2FATitle" => "Autenticação de dois fatores", + "confirmEmailAddress" => "Confirme seu endereço de e-mail.", + "emailEnterCode" => "Confirme seu email", + "emailConfirmCode" => "Insira o código de 6 dígitos que acabamos de enviar para seu endereço de e-mail.", + "email2FASubject" => "Seu código de autenticação", + "email2FAMailBody" => "Seu código de autenticação é:", + "invalid2FAToken" => "O código estava incorreto.", + "need2FA" => "Você deve concluir uma verificação de dois fatores.", + "needVerification" => "Verifique seu e-mail para concluir a ativação da conta.", + + // Ativar + "emailActivateTitle" => "Ativação de email", + "emailActivateBody" => "Acabamos de enviar um email para você com um código para confirmar seu endereço de e-mail. Copie esse código e cole abaixo.", + "emailActivateSubject" => "Seu código de ativação", + "emailActivateMailBody" => "Use o código abaixo para ativar sua conta e começar a usar o site.", + "invalidActivateToken" => "O código estava incorreto.", + "needActivate" => "Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.", + + // Grupos + "unknownGroup" => "{0} não é um grupo válido.", + "missingTitle" => "Os grupos devem ter um título.", + + // Permissões + "unknownPermission" => "{0} não é uma permissão válida." +]; From d1162b77169fcbd975eb85a7082408add2a1806a Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Tue, 31 Jan 2023 22:03:48 -0300 Subject: [PATCH 12/39] translate pt-BR Signed-off-by: caosdp-rs --- src/Language/pt-br/Auth.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Language/pt-br/Auth.php b/src/Language/pt-br/Auth.php index bcceac58e..dfe6db139 100644 --- a/src/Language/pt-br/Auth.php +++ b/src/Language/pt-br/Auth.php @@ -92,8 +92,8 @@ "needActivate" => "Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.", // Grupos - "unknownGroup" => "{0} não é um grupo válido.", - "missingTitle" => "Os grupos devem ter um título.", + "unknownGroup" => "{0} não é um grupo válido.", + "missingTitle" => "Os grupos devem ter um título.", // Permissões "unknownPermission" => "{0} não é uma permissão válida." From 6d0282a9585ac0903acfd0293ecf0517d8d2d053 Mon Sep 17 00:00:00 2001 From: caosdp-rs <65447885+caosdp-rs@users.noreply.github.com> Date: Tue, 31 Jan 2023 22:09:45 -0300 Subject: [PATCH 13/39] Delete src/Language/pt-br directory Signed-off-by: caosdp-rs --- src/Language/pt-br/Auth.php | 100 ------------------------------------ 1 file changed, 100 deletions(-) delete mode 100644 src/Language/pt-br/Auth.php diff --git a/src/Language/pt-br/Auth.php b/src/Language/pt-br/Auth.php deleted file mode 100644 index dfe6db139..000000000 --- a/src/Language/pt-br/Auth.php +++ /dev/null @@ -1,100 +0,0 @@ - '{0} não é um autenticador válido.', - 'unknownUserProvider' => 'Não foi possível determinar o provedor de usuário a ser usado.', - 'invalidUser' => 'Não foi possível localizar o usuário especificado.', - 'badAttempt' => 'Não foi possível fazer login. Por favor, verifique suas credenciais.', - 'noPassword' => 'Não é possível validar um usuário sem uma senha.', - 'invalidPassword' => 'Não foi possível fazer login. Por favor, verifique sua senha.', - 'noToken' => 'Toda requisição deve ter um token portador no cabeçalho {0}.', - 'badToken' => 'O token de acesso é inválido.', - 'oldToken' => 'O token de acesso expirou.', - 'noUserEntity' => 'A entidade de usuário deve ser fornecida para validação de senha.', - 'invalidEmail' => 'Não foi possível verificar se o endereço de email corresponde ao e-mail registrado.', - 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para "{0}".', - 'throttled' => 'Muitas solicitações feitas a partir deste endereço IP. Você pode tentar novamente em {0} segundos.', - 'notEnoughPrivilege' => 'Você não tem a permissão necessária para realizar a operação desejada.', - - 'email' => 'Endereço de Email', - 'username' => 'Nome de usuário', - 'password' => 'Senha', - 'passwordConfirm' => 'Senha (novamente)', - 'haveAccount' => 'Já tem uma conta?', - - // Botões - 'confirm' => 'Confirmar', - 'send' => 'Enviar', - - // Registro - 'register' => 'Registrar', - 'registerDisabled' => 'O registro não está permitido no momento.', - 'registerSuccess' => 'Bem-vindo a bordo!', - - // Login - 'login' => 'Login', - 'needAccount' => 'Precisa de uma conta?', - 'rememberMe' => 'Lembrar de mim?', - 'forgotPassword' => 'Esqueceu sua senha?', - 'useMagicLink' => 'Use um Link de Login', - 'magicLinkSubject' => 'Seu Link de Login', - 'magicTokenNotFound' => 'Não foi possível verificar o link.', - 'magicLinkExpired' => 'Desculpe, o link expirou.', - 'checkYourEmail' => 'Verifique seu e-mail!', - 'magicLinkDetails' => 'Acabamos de enviar um e-mail com um link de Login. Ele é válido apenas por {0} minutos.', - 'successLogout' => 'Você saiu com sucesso.', - - // Senhas - 'errorPasswordLength' => 'As senhas devem ter pelo menos {0, number} caracteres.', - 'suggestPasswordLength' => 'Frases de senha - até 255 caracteres - criam senhas mais seguras que são fáceis de lembrar.', - 'errorPasswordCommon' => 'A senha não deve ser uma senha comum.', - 'suggestPasswordCommon' => 'A senha foi verificada contra mais de 65k senhas comuns ou senhas que foram vazadas por invasões.', - 'errorPasswordPersonal' => 'As senhas não podem conter informações pessoais re-criptografadas.', - 'suggestPasswordPersonal' => 'Variações do seu endereço de e-mail ou nome de usuário não devem ser usadas como senhas.', - 'errorPasswordTooSimilar' => 'A senha é muito semelhante ao nome de usuário.', - 'suggestPasswordTooSimilar' => 'Não use partes do seu nome de usuário na sua senha.', - 'errorPasswordPwned' => 'A senha {0} foi exposta devido a uma violação de dados e foi vista {1, number} vezes em {2} de senhas comprometidas.', - 'suggestPasswordPwned' => '{0} nunca deve ser usado como uma senha. Se você estiver usando em algum lugar, altere imediatamente.', - 'errorPasswordEmpty' => 'É necessária uma senha.', - 'passwordChangeSuccess' => 'Senha alterada com sucesso', - 'userDoesNotExist' => 'Senha não foi alterada. Usuário não existe', - 'resetTokenExpired' => 'Desculpe. Seu token de redefinição expirou.', - - // E-mails Globais - 'emailInfo' => 'Algumas informações sobre a pessoa:', - 'emailIpAddress' => 'Endereço IP:', - - "emailDevice" => "Dispositivo:", - "emailDate" => "Data:", - - // 2FA - "email2FATitle" => "Autenticação de dois fatores", - "confirmEmailAddress" => "Confirme seu endereço de e-mail.", - "emailEnterCode" => "Confirme seu email", - "emailConfirmCode" => "Insira o código de 6 dígitos que acabamos de enviar para seu endereço de e-mail.", - "email2FASubject" => "Seu código de autenticação", - "email2FAMailBody" => "Seu código de autenticação é:", - "invalid2FAToken" => "O código estava incorreto.", - "need2FA" => "Você deve concluir uma verificação de dois fatores.", - "needVerification" => "Verifique seu e-mail para concluir a ativação da conta.", - - // Ativar - "emailActivateTitle" => "Ativação de email", - "emailActivateBody" => "Acabamos de enviar um email para você com um código para confirmar seu endereço de e-mail. Copie esse código e cole abaixo.", - "emailActivateSubject" => "Seu código de ativação", - "emailActivateMailBody" => "Use o código abaixo para ativar sua conta e começar a usar o site.", - "invalidActivateToken" => "O código estava incorreto.", - "needActivate" => "Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.", - - // Grupos - "unknownGroup" => "{0} não é um grupo válido.", - "missingTitle" => "Os grupos devem ter um título.", - - // Permissões - "unknownPermission" => "{0} não é uma permissão válida." -]; From 0379c47c2dc45783bc3f72a6f61585e404b86532 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Tue, 31 Jan 2023 22:11:15 -0300 Subject: [PATCH 14/39] translate pt-BR Signed-off-by: caosdp-rs --- src/Language/pt-BR/Auth.php | 100 ++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 src/Language/pt-BR/Auth.php diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php new file mode 100644 index 000000000..bcceac58e --- /dev/null +++ b/src/Language/pt-BR/Auth.php @@ -0,0 +1,100 @@ + '{0} não é um autenticador válido.', + 'unknownUserProvider' => 'Não foi possível determinar o provedor de usuário a ser usado.', + 'invalidUser' => 'Não foi possível localizar o usuário especificado.', + 'badAttempt' => 'Não foi possível fazer login. Por favor, verifique suas credenciais.', + 'noPassword' => 'Não é possível validar um usuário sem uma senha.', + 'invalidPassword' => 'Não foi possível fazer login. Por favor, verifique sua senha.', + 'noToken' => 'Toda requisição deve ter um token portador no cabeçalho {0}.', + 'badToken' => 'O token de acesso é inválido.', + 'oldToken' => 'O token de acesso expirou.', + 'noUserEntity' => 'A entidade de usuário deve ser fornecida para validação de senha.', + 'invalidEmail' => 'Não foi possível verificar se o endereço de email corresponde ao e-mail registrado.', + 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para "{0}".', + 'throttled' => 'Muitas solicitações feitas a partir deste endereço IP. Você pode tentar novamente em {0} segundos.', + 'notEnoughPrivilege' => 'Você não tem a permissão necessária para realizar a operação desejada.', + + 'email' => 'Endereço de Email', + 'username' => 'Nome de usuário', + 'password' => 'Senha', + 'passwordConfirm' => 'Senha (novamente)', + 'haveAccount' => 'Já tem uma conta?', + + // Botões + 'confirm' => 'Confirmar', + 'send' => 'Enviar', + + // Registro + 'register' => 'Registrar', + 'registerDisabled' => 'O registro não está permitido no momento.', + 'registerSuccess' => 'Bem-vindo a bordo!', + + // Login + 'login' => 'Login', + 'needAccount' => 'Precisa de uma conta?', + 'rememberMe' => 'Lembrar de mim?', + 'forgotPassword' => 'Esqueceu sua senha?', + 'useMagicLink' => 'Use um Link de Login', + 'magicLinkSubject' => 'Seu Link de Login', + 'magicTokenNotFound' => 'Não foi possível verificar o link.', + 'magicLinkExpired' => 'Desculpe, o link expirou.', + 'checkYourEmail' => 'Verifique seu e-mail!', + 'magicLinkDetails' => 'Acabamos de enviar um e-mail com um link de Login. Ele é válido apenas por {0} minutos.', + 'successLogout' => 'Você saiu com sucesso.', + + // Senhas + 'errorPasswordLength' => 'As senhas devem ter pelo menos {0, number} caracteres.', + 'suggestPasswordLength' => 'Frases de senha - até 255 caracteres - criam senhas mais seguras que são fáceis de lembrar.', + 'errorPasswordCommon' => 'A senha não deve ser uma senha comum.', + 'suggestPasswordCommon' => 'A senha foi verificada contra mais de 65k senhas comuns ou senhas que foram vazadas por invasões.', + 'errorPasswordPersonal' => 'As senhas não podem conter informações pessoais re-criptografadas.', + 'suggestPasswordPersonal' => 'Variações do seu endereço de e-mail ou nome de usuário não devem ser usadas como senhas.', + 'errorPasswordTooSimilar' => 'A senha é muito semelhante ao nome de usuário.', + 'suggestPasswordTooSimilar' => 'Não use partes do seu nome de usuário na sua senha.', + 'errorPasswordPwned' => 'A senha {0} foi exposta devido a uma violação de dados e foi vista {1, number} vezes em {2} de senhas comprometidas.', + 'suggestPasswordPwned' => '{0} nunca deve ser usado como uma senha. Se você estiver usando em algum lugar, altere imediatamente.', + 'errorPasswordEmpty' => 'É necessária uma senha.', + 'passwordChangeSuccess' => 'Senha alterada com sucesso', + 'userDoesNotExist' => 'Senha não foi alterada. Usuário não existe', + 'resetTokenExpired' => 'Desculpe. Seu token de redefinição expirou.', + + // E-mails Globais + 'emailInfo' => 'Algumas informações sobre a pessoa:', + 'emailIpAddress' => 'Endereço IP:', + + "emailDevice" => "Dispositivo:", + "emailDate" => "Data:", + + // 2FA + "email2FATitle" => "Autenticação de dois fatores", + "confirmEmailAddress" => "Confirme seu endereço de e-mail.", + "emailEnterCode" => "Confirme seu email", + "emailConfirmCode" => "Insira o código de 6 dígitos que acabamos de enviar para seu endereço de e-mail.", + "email2FASubject" => "Seu código de autenticação", + "email2FAMailBody" => "Seu código de autenticação é:", + "invalid2FAToken" => "O código estava incorreto.", + "need2FA" => "Você deve concluir uma verificação de dois fatores.", + "needVerification" => "Verifique seu e-mail para concluir a ativação da conta.", + + // Ativar + "emailActivateTitle" => "Ativação de email", + "emailActivateBody" => "Acabamos de enviar um email para você com um código para confirmar seu endereço de e-mail. Copie esse código e cole abaixo.", + "emailActivateSubject" => "Seu código de ativação", + "emailActivateMailBody" => "Use o código abaixo para ativar sua conta e começar a usar o site.", + "invalidActivateToken" => "O código estava incorreto.", + "needActivate" => "Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.", + + // Grupos + "unknownGroup" => "{0} não é um grupo válido.", + "missingTitle" => "Os grupos devem ter um título.", + + // Permissões + "unknownPermission" => "{0} não é uma permissão válida." +]; From e9f52cd19e192f11d6b4df960eef8144a8caed09 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Tue, 31 Jan 2023 22:49:26 -0300 Subject: [PATCH 15/39] translate pt-BR. Signed-off-by: caosdp-rs --- src/Language/pt-BR/Auth.php | 42 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index bcceac58e..41433bcb4 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -17,7 +17,7 @@ 'oldToken' => 'O token de acesso expirou.', 'noUserEntity' => 'A entidade de usuário deve ser fornecida para validação de senha.', 'invalidEmail' => 'Não foi possível verificar se o endereço de email corresponde ao e-mail registrado.', - 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para "{0}".', + 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para '{0}'.', 'throttled' => 'Muitas solicitações feitas a partir deste endereço IP. Você pode tentar novamente em {0} segundos.', 'notEnoughPrivilege' => 'Você não tem a permissão necessária para realizar a operação desejada.', @@ -69,32 +69,32 @@ 'emailInfo' => 'Algumas informações sobre a pessoa:', 'emailIpAddress' => 'Endereço IP:', - "emailDevice" => "Dispositivo:", - "emailDate" => "Data:", + 'emailDevice' => 'Dispositivo:', + 'emailDate' => 'Data:', // 2FA - "email2FATitle" => "Autenticação de dois fatores", - "confirmEmailAddress" => "Confirme seu endereço de e-mail.", - "emailEnterCode" => "Confirme seu email", - "emailConfirmCode" => "Insira o código de 6 dígitos que acabamos de enviar para seu endereço de e-mail.", - "email2FASubject" => "Seu código de autenticação", - "email2FAMailBody" => "Seu código de autenticação é:", - "invalid2FAToken" => "O código estava incorreto.", - "need2FA" => "Você deve concluir uma verificação de dois fatores.", - "needVerification" => "Verifique seu e-mail para concluir a ativação da conta.", + 'email2FATitle' => 'Autenticação de dois fatores', + 'confirmEmailAddress' => 'Confirme seu endereço de e-mail.', + 'emailEnterCode' => 'Confirme seu email', + 'emailConfirmCode' => 'Insira o código de 6 dígitos que acabamos de enviar para seu endereço de e-mail.', + 'email2FASubject' => 'Seu código de autenticação', + 'email2FAMailBody' => 'Seu código de autenticação é:', + 'invalid2FAToken' => 'O código estava incorreto.', + 'need2FA' => 'Você deve concluir uma verificação de dois fatores.', + 'needVerification' => 'Verifique seu e-mail para concluir a ativação da conta.', // Ativar - "emailActivateTitle" => "Ativação de email", - "emailActivateBody" => "Acabamos de enviar um email para você com um código para confirmar seu endereço de e-mail. Copie esse código e cole abaixo.", - "emailActivateSubject" => "Seu código de ativação", - "emailActivateMailBody" => "Use o código abaixo para ativar sua conta e começar a usar o site.", - "invalidActivateToken" => "O código estava incorreto.", - "needActivate" => "Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.", + 'emailActivateTitle' => 'Ativação de email', + 'emailActivateBody' => 'Acabamos de enviar um email para você com um código para confirmar seu endereço de e-mail. Copie esse código e cole abaixo.', + 'emailActivateSubject' => 'Seu código de ativação', + 'emailActivateMailBody' => 'Use o código abaixo para ativar sua conta e começar a usar o site.', + 'invalidActivateToken' => 'O código estava incorreto.', + 'needActivate' => 'Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.', // Grupos - "unknownGroup" => "{0} não é um grupo válido.", - "missingTitle" => "Os grupos devem ter um título.", + 'unknownGroup' => '{0} não é um grupo válido.', + 'missingTitle' => 'Os grupos devem ter um título.', // Permissões - "unknownPermission" => "{0} não é uma permissão válida." + 'unknownPermission' => '{0} não é uma permissão válida.' ]; From a71306ad2840b53f34dd43da1838e52e9355fae9 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Tue, 31 Jan 2023 22:50:16 -0300 Subject: [PATCH 16/39] translate pt-BR. Signed-off-by: caosdp-rs --- src/Language/pt-BR/Auth.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index 41433bcb4..9dd22ae53 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -17,7 +17,7 @@ 'oldToken' => 'O token de acesso expirou.', 'noUserEntity' => 'A entidade de usuário deve ser fornecida para validação de senha.', 'invalidEmail' => 'Não foi possível verificar se o endereço de email corresponde ao e-mail registrado.', - 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para '{0}'.', + 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para "{0}".', 'throttled' => 'Muitas solicitações feitas a partir deste endereço IP. Você pode tentar novamente em {0} segundos.', 'notEnoughPrivilege' => 'Você não tem a permissão necessária para realizar a operação desejada.', From 86c4ce1cbc23bd336521dc3195b9cc3796c1828c Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Wed, 1 Feb 2023 02:41:57 -0300 Subject: [PATCH 17/39] Test Brazilian Signed-off-by: caosdp-rs --- .../Language/AbstractTranslationTestCase.php | 2 +- tests/Language/BrazilianTranslationTest.php | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 tests/Language/BrazilianTranslationTest.php diff --git a/tests/Language/AbstractTranslationTestCase.php b/tests/Language/AbstractTranslationTestCase.php index ef768f884..b98f850da 100644 --- a/tests/Language/AbstractTranslationTestCase.php +++ b/tests/Language/AbstractTranslationTestCase.php @@ -66,7 +66,7 @@ abstract class AbstractTranslationTestCase extends TestCase // NorwegianTranslationTest::class => 'no', // PolishTranslationTest::class => 'pl', // PortugueseTranslationTest::class => 'pt', - // BrazilianTranslationTest::class => 'pt-BR', + BrazilianTranslationTest::class => 'pt-BR', // RussianTranslationTest::class => 'ru', // SinhalaTranslationTest::class => 'si', SlovakTranslationTest::class => 'sk', diff --git a/tests/Language/BrazilianTranslationTest.php b/tests/Language/BrazilianTranslationTest.php new file mode 100644 index 000000000..2c81aa605 --- /dev/null +++ b/tests/Language/BrazilianTranslationTest.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Tests\Language; + +/** + * @internal + */ +final class BrazilianTranslationTest extends AbstractTranslationTestCase +{ +} From 5b43411f0723d56a94196e4356e6cc645f3acb33 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Wed, 1 Feb 2023 19:01:30 -0300 Subject: [PATCH 18/39] php csfix Signed-off-by: caosdp-rs --- src/Language/pt-BR/Auth.php | 42 +++++++++---------- .../Language/AbstractTranslationTestCase.php | 2 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index 9dd22ae53..c97cc0f7e 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -41,13 +41,13 @@ 'needAccount' => 'Precisa de uma conta?', 'rememberMe' => 'Lembrar de mim?', 'forgotPassword' => 'Esqueceu sua senha?', - 'useMagicLink' => 'Use um Link de Login', - 'magicLinkSubject' => 'Seu Link de Login', + 'useMagicLink' => 'Use um Link de Login', + 'magicLinkSubject' => 'Seu Link de Login', 'magicTokenNotFound' => 'Não foi possível verificar o link.', - 'magicLinkExpired' => 'Desculpe, o link expirou.', - 'checkYourEmail' => 'Verifique seu e-mail!', - 'magicLinkDetails' => 'Acabamos de enviar um e-mail com um link de Login. Ele é válido apenas por {0} minutos.', - 'successLogout' => 'Você saiu com sucesso.', + 'magicLinkExpired' => 'Desculpe, o link expirou.', + 'checkYourEmail' => 'Verifique seu e-mail!', + 'magicLinkDetails' => 'Acabamos de enviar um e-mail com um link de Login. Ele é válido apenas por {0} minutos.', + 'successLogout' => 'Você saiu com sucesso.', // Senhas 'errorPasswordLength' => 'As senhas devem ter pelo menos {0, number} caracteres.', @@ -70,31 +70,31 @@ 'emailIpAddress' => 'Endereço IP:', 'emailDevice' => 'Dispositivo:', - 'emailDate' => 'Data:', + 'emailDate' => 'Data:', // 2FA - 'email2FATitle' => 'Autenticação de dois fatores', + 'email2FATitle' => 'Autenticação de dois fatores', 'confirmEmailAddress' => 'Confirme seu endereço de e-mail.', - 'emailEnterCode' => 'Confirme seu email', - 'emailConfirmCode' => 'Insira o código de 6 dígitos que acabamos de enviar para seu endereço de e-mail.', - 'email2FASubject' => 'Seu código de autenticação', - 'email2FAMailBody' => 'Seu código de autenticação é:', - 'invalid2FAToken' => 'O código estava incorreto.', - 'need2FA' => 'Você deve concluir uma verificação de dois fatores.', - 'needVerification' => 'Verifique seu e-mail para concluir a ativação da conta.', + 'emailEnterCode' => 'Confirme seu email', + 'emailConfirmCode' => 'Insira o código de 6 dígitos que acabamos de enviar para seu endereço de e-mail.', + 'email2FASubject' => 'Seu código de autenticação', + 'email2FAMailBody' => 'Seu código de autenticação é:', + 'invalid2FAToken' => 'O código estava incorreto.', + 'need2FA' => 'Você deve concluir uma verificação de dois fatores.', + 'needVerification' => 'Verifique seu e-mail para concluir a ativação da conta.', // Ativar - 'emailActivateTitle' => 'Ativação de email', - 'emailActivateBody' => 'Acabamos de enviar um email para você com um código para confirmar seu endereço de e-mail. Copie esse código e cole abaixo.', - 'emailActivateSubject' => 'Seu código de ativação', + 'emailActivateTitle' => 'Ativação de email', + 'emailActivateBody' => 'Acabamos de enviar um email para você com um código para confirmar seu endereço de e-mail. Copie esse código e cole abaixo.', + 'emailActivateSubject' => 'Seu código de ativação', 'emailActivateMailBody' => 'Use o código abaixo para ativar sua conta e começar a usar o site.', - 'invalidActivateToken' => 'O código estava incorreto.', - 'needActivate' => 'Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.', + 'invalidActivateToken' => 'O código estava incorreto.', + 'needActivate' => 'Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.', // Grupos 'unknownGroup' => '{0} não é um grupo válido.', 'missingTitle' => 'Os grupos devem ter um título.', // Permissões - 'unknownPermission' => '{0} não é uma permissão válida.' + 'unknownPermission' => '{0} não é uma permissão válida.', ]; diff --git a/tests/Language/AbstractTranslationTestCase.php b/tests/Language/AbstractTranslationTestCase.php index b98f850da..6b8edc707 100644 --- a/tests/Language/AbstractTranslationTestCase.php +++ b/tests/Language/AbstractTranslationTestCase.php @@ -66,7 +66,7 @@ abstract class AbstractTranslationTestCase extends TestCase // NorwegianTranslationTest::class => 'no', // PolishTranslationTest::class => 'pl', // PortugueseTranslationTest::class => 'pt', - BrazilianTranslationTest::class => 'pt-BR', + BrazilianTranslationTest::class => 'pt-BR', // RussianTranslationTest::class => 'ru', // SinhalaTranslationTest::class => 'si', SlovakTranslationTest::class => 'sk', From 8d1679ce521975854afc902e54ca3a6710cc293d Mon Sep 17 00:00:00 2001 From: caosdp-rs <65447885+caosdp-rs@users.noreply.github.com> Date: Wed, 1 Feb 2023 19:02:25 -0300 Subject: [PATCH 19/39] Update src/Language/pt-BR/Auth.php Co-authored-by: Pooya Parsa Dadashi Signed-off-by: caosdp-rs --- src/Language/pt-BR/Auth.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index c97cc0f7e..06ffe01db 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace CodeIgniter\Shield\Language\en; +namespace CodeIgniter\Shield\Language\pt-BR; return [ // Exceções From f6c98d8ce376177923dfe4079a6f57c1bb7c46b6 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Wed, 1 Feb 2023 20:52:52 -0300 Subject: [PATCH 20/39] update signature Signed-off-by: caosdp-rs --- src/Language/pt-BR/Auth.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index 06ffe01db..c25260601 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -2,6 +2,7 @@ declare(strict_types=1); + namespace CodeIgniter\Shield\Language\pt-BR; return [ From 143e23bed72d4d5bcea3ae55ef9d5a21a772ead1 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Wed, 1 Feb 2023 22:22:03 -0300 Subject: [PATCH 21/39] update namespace --- src/Language/pt-BR/Auth.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index c25260601..e4b6848d3 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -3,8 +3,6 @@ declare(strict_types=1); -namespace CodeIgniter\Shield\Language\pt-BR; - return [ // Exceções 'unknownAuthenticator' => '{0} não é um autenticador válido.', From efe8fa322c09da558b350ae37240ca6e68dcd87a Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Thu, 2 Feb 2023 02:34:24 -0300 Subject: [PATCH 22/39] Teste --- src/Language/pt-BR/Auth.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index e4b6848d3..d69d9fd1e 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -2,9 +2,8 @@ declare(strict_types=1); - return [ - // Exceções + // Exceptions 'unknownAuthenticator' => '{0} não é um autenticador válido.', 'unknownUserProvider' => 'Não foi possível determinar o provedor de usuário a ser usado.', 'invalidUser' => 'Não foi possível localizar o usuário especificado.', @@ -16,7 +15,7 @@ 'oldToken' => 'O token de acesso expirou.', 'noUserEntity' => 'A entidade de usuário deve ser fornecida para validação de senha.', 'invalidEmail' => 'Não foi possível verificar se o endereço de email corresponde ao e-mail registrado.', - 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para "{0}".', + 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para {0}.', 'throttled' => 'Muitas solicitações feitas a partir deste endereço IP. Você pode tentar novamente em {0} segundos.', 'notEnoughPrivilege' => 'Você não tem a permissão necessária para realizar a operação desejada.', From b051b5ae667218ebb651d029569bbb93ac55c5e2 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Thu, 2 Feb 2023 02:47:18 -0300 Subject: [PATCH 23/39] Teste. --- src/Language/pt-BR/Auth.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index d69d9fd1e..3afcb3837 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -66,9 +66,8 @@ // E-mails Globais 'emailInfo' => 'Algumas informações sobre a pessoa:', 'emailIpAddress' => 'Endereço IP:', - - 'emailDevice' => 'Dispositivo:', - 'emailDate' => 'Data:', + 'emailDevice' => 'Dispositivo:', + 'emailDate' => 'Data:', // 2FA 'email2FATitle' => 'Autenticação de dois fatores', From 4dceb2dc3bedfe12c377e5c59d06171b709caf1b Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Thu, 2 Feb 2023 03:35:58 -0300 Subject: [PATCH 24/39] Ignore the login translate is br same en --- docs/authorization.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/authorization.md b/docs/authorization.md index 977884adc..a23d7665b 100644 --- a/docs/authorization.md +++ b/docs/authorization.md @@ -129,6 +129,20 @@ if (! $user->hasPermission('users.create')) { } ``` +<<<<<<< HEAD +======= +#### Authorizing via Filters + +You can restrict access to multiple routes through a [Controller Filter](https://codeigniter.com/user_guide/incoming/filters.html). One is provided for both restricting via groups the user belongs to, as well as which permission they need. The filters are automatically registered with the system under the `group` and `permission` aliases, respectively. You can define the protections within **app/Config/Filters.php**: + +```php +public $filters = [ + 'group:admin,superadmin' => ['before' => ['admin/*']], + 'permission:users.manage' => ['before' => ['admin/users/*']], +]; +``` + +>>>>>>> 39f1a58 (docs: make file paths bold) #### Authorizing via Routes You can restrict access to a route or route group through a From 7f25d0c3e2e0dae666980fdb00258338243b8763 Mon Sep 17 00:00:00 2001 From: kenjis Date: Thu, 19 Jan 2023 16:48:14 +0900 Subject: [PATCH 25/39] docs: remove unsupported code sample $filters cannot set filer aruguments. --- docs/authorization.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/authorization.md b/docs/authorization.md index a23d7665b..552bedb89 100644 --- a/docs/authorization.md +++ b/docs/authorization.md @@ -129,6 +129,7 @@ if (! $user->hasPermission('users.create')) { } ``` +<<<<<<< HEAD <<<<<<< HEAD ======= #### Authorizing via Filters @@ -143,6 +144,8 @@ public $filters = [ ``` >>>>>>> 39f1a58 (docs: make file paths bold) +======= +>>>>>>> 9981e4e (docs: remove unsupported code sample) #### Authorizing via Routes You can restrict access to a route or route group through a From 06524b6d426766bd305a8ee7de90fea98e2f35fc Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Tue, 31 Jan 2023 20:30:43 -0300 Subject: [PATCH 26/39] translate pt-br Signed-off-by: caosdp-rs --- src/Language/pt-br/Auth.php | 100 ++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 src/Language/pt-br/Auth.php diff --git a/src/Language/pt-br/Auth.php b/src/Language/pt-br/Auth.php new file mode 100644 index 000000000..bcceac58e --- /dev/null +++ b/src/Language/pt-br/Auth.php @@ -0,0 +1,100 @@ + '{0} não é um autenticador válido.', + 'unknownUserProvider' => 'Não foi possível determinar o provedor de usuário a ser usado.', + 'invalidUser' => 'Não foi possível localizar o usuário especificado.', + 'badAttempt' => 'Não foi possível fazer login. Por favor, verifique suas credenciais.', + 'noPassword' => 'Não é possível validar um usuário sem uma senha.', + 'invalidPassword' => 'Não foi possível fazer login. Por favor, verifique sua senha.', + 'noToken' => 'Toda requisição deve ter um token portador no cabeçalho {0}.', + 'badToken' => 'O token de acesso é inválido.', + 'oldToken' => 'O token de acesso expirou.', + 'noUserEntity' => 'A entidade de usuário deve ser fornecida para validação de senha.', + 'invalidEmail' => 'Não foi possível verificar se o endereço de email corresponde ao e-mail registrado.', + 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para "{0}".', + 'throttled' => 'Muitas solicitações feitas a partir deste endereço IP. Você pode tentar novamente em {0} segundos.', + 'notEnoughPrivilege' => 'Você não tem a permissão necessária para realizar a operação desejada.', + + 'email' => 'Endereço de Email', + 'username' => 'Nome de usuário', + 'password' => 'Senha', + 'passwordConfirm' => 'Senha (novamente)', + 'haveAccount' => 'Já tem uma conta?', + + // Botões + 'confirm' => 'Confirmar', + 'send' => 'Enviar', + + // Registro + 'register' => 'Registrar', + 'registerDisabled' => 'O registro não está permitido no momento.', + 'registerSuccess' => 'Bem-vindo a bordo!', + + // Login + 'login' => 'Login', + 'needAccount' => 'Precisa de uma conta?', + 'rememberMe' => 'Lembrar de mim?', + 'forgotPassword' => 'Esqueceu sua senha?', + 'useMagicLink' => 'Use um Link de Login', + 'magicLinkSubject' => 'Seu Link de Login', + 'magicTokenNotFound' => 'Não foi possível verificar o link.', + 'magicLinkExpired' => 'Desculpe, o link expirou.', + 'checkYourEmail' => 'Verifique seu e-mail!', + 'magicLinkDetails' => 'Acabamos de enviar um e-mail com um link de Login. Ele é válido apenas por {0} minutos.', + 'successLogout' => 'Você saiu com sucesso.', + + // Senhas + 'errorPasswordLength' => 'As senhas devem ter pelo menos {0, number} caracteres.', + 'suggestPasswordLength' => 'Frases de senha - até 255 caracteres - criam senhas mais seguras que são fáceis de lembrar.', + 'errorPasswordCommon' => 'A senha não deve ser uma senha comum.', + 'suggestPasswordCommon' => 'A senha foi verificada contra mais de 65k senhas comuns ou senhas que foram vazadas por invasões.', + 'errorPasswordPersonal' => 'As senhas não podem conter informações pessoais re-criptografadas.', + 'suggestPasswordPersonal' => 'Variações do seu endereço de e-mail ou nome de usuário não devem ser usadas como senhas.', + 'errorPasswordTooSimilar' => 'A senha é muito semelhante ao nome de usuário.', + 'suggestPasswordTooSimilar' => 'Não use partes do seu nome de usuário na sua senha.', + 'errorPasswordPwned' => 'A senha {0} foi exposta devido a uma violação de dados e foi vista {1, number} vezes em {2} de senhas comprometidas.', + 'suggestPasswordPwned' => '{0} nunca deve ser usado como uma senha. Se você estiver usando em algum lugar, altere imediatamente.', + 'errorPasswordEmpty' => 'É necessária uma senha.', + 'passwordChangeSuccess' => 'Senha alterada com sucesso', + 'userDoesNotExist' => 'Senha não foi alterada. Usuário não existe', + 'resetTokenExpired' => 'Desculpe. Seu token de redefinição expirou.', + + // E-mails Globais + 'emailInfo' => 'Algumas informações sobre a pessoa:', + 'emailIpAddress' => 'Endereço IP:', + + "emailDevice" => "Dispositivo:", + "emailDate" => "Data:", + + // 2FA + "email2FATitle" => "Autenticação de dois fatores", + "confirmEmailAddress" => "Confirme seu endereço de e-mail.", + "emailEnterCode" => "Confirme seu email", + "emailConfirmCode" => "Insira o código de 6 dígitos que acabamos de enviar para seu endereço de e-mail.", + "email2FASubject" => "Seu código de autenticação", + "email2FAMailBody" => "Seu código de autenticação é:", + "invalid2FAToken" => "O código estava incorreto.", + "need2FA" => "Você deve concluir uma verificação de dois fatores.", + "needVerification" => "Verifique seu e-mail para concluir a ativação da conta.", + + // Ativar + "emailActivateTitle" => "Ativação de email", + "emailActivateBody" => "Acabamos de enviar um email para você com um código para confirmar seu endereço de e-mail. Copie esse código e cole abaixo.", + "emailActivateSubject" => "Seu código de ativação", + "emailActivateMailBody" => "Use o código abaixo para ativar sua conta e começar a usar o site.", + "invalidActivateToken" => "O código estava incorreto.", + "needActivate" => "Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.", + + // Grupos + "unknownGroup" => "{0} não é um grupo válido.", + "missingTitle" => "Os grupos devem ter um título.", + + // Permissões + "unknownPermission" => "{0} não é uma permissão válida." +]; From d9a7b67c03ef27c599f141f4a2b921989d23dc28 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Tue, 31 Jan 2023 22:03:48 -0300 Subject: [PATCH 27/39] translate pt-BR Signed-off-by: caosdp-rs --- src/Language/pt-br/Auth.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Language/pt-br/Auth.php b/src/Language/pt-br/Auth.php index bcceac58e..dfe6db139 100644 --- a/src/Language/pt-br/Auth.php +++ b/src/Language/pt-br/Auth.php @@ -92,8 +92,8 @@ "needActivate" => "Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.", // Grupos - "unknownGroup" => "{0} não é um grupo válido.", - "missingTitle" => "Os grupos devem ter um título.", + "unknownGroup" => "{0} não é um grupo válido.", + "missingTitle" => "Os grupos devem ter um título.", // Permissões "unknownPermission" => "{0} não é uma permissão válida." From 73505440c5887d2a58a03c7c7e6e357f01db7157 Mon Sep 17 00:00:00 2001 From: caosdp-rs <65447885+caosdp-rs@users.noreply.github.com> Date: Tue, 31 Jan 2023 22:09:45 -0300 Subject: [PATCH 28/39] Delete src/Language/pt-br directory Signed-off-by: caosdp-rs --- src/Language/pt-br/Auth.php | 100 ------------------------------------ 1 file changed, 100 deletions(-) delete mode 100644 src/Language/pt-br/Auth.php diff --git a/src/Language/pt-br/Auth.php b/src/Language/pt-br/Auth.php deleted file mode 100644 index dfe6db139..000000000 --- a/src/Language/pt-br/Auth.php +++ /dev/null @@ -1,100 +0,0 @@ - '{0} não é um autenticador válido.', - 'unknownUserProvider' => 'Não foi possível determinar o provedor de usuário a ser usado.', - 'invalidUser' => 'Não foi possível localizar o usuário especificado.', - 'badAttempt' => 'Não foi possível fazer login. Por favor, verifique suas credenciais.', - 'noPassword' => 'Não é possível validar um usuário sem uma senha.', - 'invalidPassword' => 'Não foi possível fazer login. Por favor, verifique sua senha.', - 'noToken' => 'Toda requisição deve ter um token portador no cabeçalho {0}.', - 'badToken' => 'O token de acesso é inválido.', - 'oldToken' => 'O token de acesso expirou.', - 'noUserEntity' => 'A entidade de usuário deve ser fornecida para validação de senha.', - 'invalidEmail' => 'Não foi possível verificar se o endereço de email corresponde ao e-mail registrado.', - 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para "{0}".', - 'throttled' => 'Muitas solicitações feitas a partir deste endereço IP. Você pode tentar novamente em {0} segundos.', - 'notEnoughPrivilege' => 'Você não tem a permissão necessária para realizar a operação desejada.', - - 'email' => 'Endereço de Email', - 'username' => 'Nome de usuário', - 'password' => 'Senha', - 'passwordConfirm' => 'Senha (novamente)', - 'haveAccount' => 'Já tem uma conta?', - - // Botões - 'confirm' => 'Confirmar', - 'send' => 'Enviar', - - // Registro - 'register' => 'Registrar', - 'registerDisabled' => 'O registro não está permitido no momento.', - 'registerSuccess' => 'Bem-vindo a bordo!', - - // Login - 'login' => 'Login', - 'needAccount' => 'Precisa de uma conta?', - 'rememberMe' => 'Lembrar de mim?', - 'forgotPassword' => 'Esqueceu sua senha?', - 'useMagicLink' => 'Use um Link de Login', - 'magicLinkSubject' => 'Seu Link de Login', - 'magicTokenNotFound' => 'Não foi possível verificar o link.', - 'magicLinkExpired' => 'Desculpe, o link expirou.', - 'checkYourEmail' => 'Verifique seu e-mail!', - 'magicLinkDetails' => 'Acabamos de enviar um e-mail com um link de Login. Ele é válido apenas por {0} minutos.', - 'successLogout' => 'Você saiu com sucesso.', - - // Senhas - 'errorPasswordLength' => 'As senhas devem ter pelo menos {0, number} caracteres.', - 'suggestPasswordLength' => 'Frases de senha - até 255 caracteres - criam senhas mais seguras que são fáceis de lembrar.', - 'errorPasswordCommon' => 'A senha não deve ser uma senha comum.', - 'suggestPasswordCommon' => 'A senha foi verificada contra mais de 65k senhas comuns ou senhas que foram vazadas por invasões.', - 'errorPasswordPersonal' => 'As senhas não podem conter informações pessoais re-criptografadas.', - 'suggestPasswordPersonal' => 'Variações do seu endereço de e-mail ou nome de usuário não devem ser usadas como senhas.', - 'errorPasswordTooSimilar' => 'A senha é muito semelhante ao nome de usuário.', - 'suggestPasswordTooSimilar' => 'Não use partes do seu nome de usuário na sua senha.', - 'errorPasswordPwned' => 'A senha {0} foi exposta devido a uma violação de dados e foi vista {1, number} vezes em {2} de senhas comprometidas.', - 'suggestPasswordPwned' => '{0} nunca deve ser usado como uma senha. Se você estiver usando em algum lugar, altere imediatamente.', - 'errorPasswordEmpty' => 'É necessária uma senha.', - 'passwordChangeSuccess' => 'Senha alterada com sucesso', - 'userDoesNotExist' => 'Senha não foi alterada. Usuário não existe', - 'resetTokenExpired' => 'Desculpe. Seu token de redefinição expirou.', - - // E-mails Globais - 'emailInfo' => 'Algumas informações sobre a pessoa:', - 'emailIpAddress' => 'Endereço IP:', - - "emailDevice" => "Dispositivo:", - "emailDate" => "Data:", - - // 2FA - "email2FATitle" => "Autenticação de dois fatores", - "confirmEmailAddress" => "Confirme seu endereço de e-mail.", - "emailEnterCode" => "Confirme seu email", - "emailConfirmCode" => "Insira o código de 6 dígitos que acabamos de enviar para seu endereço de e-mail.", - "email2FASubject" => "Seu código de autenticação", - "email2FAMailBody" => "Seu código de autenticação é:", - "invalid2FAToken" => "O código estava incorreto.", - "need2FA" => "Você deve concluir uma verificação de dois fatores.", - "needVerification" => "Verifique seu e-mail para concluir a ativação da conta.", - - // Ativar - "emailActivateTitle" => "Ativação de email", - "emailActivateBody" => "Acabamos de enviar um email para você com um código para confirmar seu endereço de e-mail. Copie esse código e cole abaixo.", - "emailActivateSubject" => "Seu código de ativação", - "emailActivateMailBody" => "Use o código abaixo para ativar sua conta e começar a usar o site.", - "invalidActivateToken" => "O código estava incorreto.", - "needActivate" => "Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.", - - // Grupos - "unknownGroup" => "{0} não é um grupo válido.", - "missingTitle" => "Os grupos devem ter um título.", - - // Permissões - "unknownPermission" => "{0} não é uma permissão válida." -]; From e0406d4e368f7a53ff92b522643b4584e226dfe3 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Tue, 31 Jan 2023 22:11:15 -0300 Subject: [PATCH 29/39] translate pt-BR Signed-off-by: caosdp-rs --- src/Language/pt-BR/Auth.php | 100 ++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 src/Language/pt-BR/Auth.php diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php new file mode 100644 index 000000000..bcceac58e --- /dev/null +++ b/src/Language/pt-BR/Auth.php @@ -0,0 +1,100 @@ + '{0} não é um autenticador válido.', + 'unknownUserProvider' => 'Não foi possível determinar o provedor de usuário a ser usado.', + 'invalidUser' => 'Não foi possível localizar o usuário especificado.', + 'badAttempt' => 'Não foi possível fazer login. Por favor, verifique suas credenciais.', + 'noPassword' => 'Não é possível validar um usuário sem uma senha.', + 'invalidPassword' => 'Não foi possível fazer login. Por favor, verifique sua senha.', + 'noToken' => 'Toda requisição deve ter um token portador no cabeçalho {0}.', + 'badToken' => 'O token de acesso é inválido.', + 'oldToken' => 'O token de acesso expirou.', + 'noUserEntity' => 'A entidade de usuário deve ser fornecida para validação de senha.', + 'invalidEmail' => 'Não foi possível verificar se o endereço de email corresponde ao e-mail registrado.', + 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para "{0}".', + 'throttled' => 'Muitas solicitações feitas a partir deste endereço IP. Você pode tentar novamente em {0} segundos.', + 'notEnoughPrivilege' => 'Você não tem a permissão necessária para realizar a operação desejada.', + + 'email' => 'Endereço de Email', + 'username' => 'Nome de usuário', + 'password' => 'Senha', + 'passwordConfirm' => 'Senha (novamente)', + 'haveAccount' => 'Já tem uma conta?', + + // Botões + 'confirm' => 'Confirmar', + 'send' => 'Enviar', + + // Registro + 'register' => 'Registrar', + 'registerDisabled' => 'O registro não está permitido no momento.', + 'registerSuccess' => 'Bem-vindo a bordo!', + + // Login + 'login' => 'Login', + 'needAccount' => 'Precisa de uma conta?', + 'rememberMe' => 'Lembrar de mim?', + 'forgotPassword' => 'Esqueceu sua senha?', + 'useMagicLink' => 'Use um Link de Login', + 'magicLinkSubject' => 'Seu Link de Login', + 'magicTokenNotFound' => 'Não foi possível verificar o link.', + 'magicLinkExpired' => 'Desculpe, o link expirou.', + 'checkYourEmail' => 'Verifique seu e-mail!', + 'magicLinkDetails' => 'Acabamos de enviar um e-mail com um link de Login. Ele é válido apenas por {0} minutos.', + 'successLogout' => 'Você saiu com sucesso.', + + // Senhas + 'errorPasswordLength' => 'As senhas devem ter pelo menos {0, number} caracteres.', + 'suggestPasswordLength' => 'Frases de senha - até 255 caracteres - criam senhas mais seguras que são fáceis de lembrar.', + 'errorPasswordCommon' => 'A senha não deve ser uma senha comum.', + 'suggestPasswordCommon' => 'A senha foi verificada contra mais de 65k senhas comuns ou senhas que foram vazadas por invasões.', + 'errorPasswordPersonal' => 'As senhas não podem conter informações pessoais re-criptografadas.', + 'suggestPasswordPersonal' => 'Variações do seu endereço de e-mail ou nome de usuário não devem ser usadas como senhas.', + 'errorPasswordTooSimilar' => 'A senha é muito semelhante ao nome de usuário.', + 'suggestPasswordTooSimilar' => 'Não use partes do seu nome de usuário na sua senha.', + 'errorPasswordPwned' => 'A senha {0} foi exposta devido a uma violação de dados e foi vista {1, number} vezes em {2} de senhas comprometidas.', + 'suggestPasswordPwned' => '{0} nunca deve ser usado como uma senha. Se você estiver usando em algum lugar, altere imediatamente.', + 'errorPasswordEmpty' => 'É necessária uma senha.', + 'passwordChangeSuccess' => 'Senha alterada com sucesso', + 'userDoesNotExist' => 'Senha não foi alterada. Usuário não existe', + 'resetTokenExpired' => 'Desculpe. Seu token de redefinição expirou.', + + // E-mails Globais + 'emailInfo' => 'Algumas informações sobre a pessoa:', + 'emailIpAddress' => 'Endereço IP:', + + "emailDevice" => "Dispositivo:", + "emailDate" => "Data:", + + // 2FA + "email2FATitle" => "Autenticação de dois fatores", + "confirmEmailAddress" => "Confirme seu endereço de e-mail.", + "emailEnterCode" => "Confirme seu email", + "emailConfirmCode" => "Insira o código de 6 dígitos que acabamos de enviar para seu endereço de e-mail.", + "email2FASubject" => "Seu código de autenticação", + "email2FAMailBody" => "Seu código de autenticação é:", + "invalid2FAToken" => "O código estava incorreto.", + "need2FA" => "Você deve concluir uma verificação de dois fatores.", + "needVerification" => "Verifique seu e-mail para concluir a ativação da conta.", + + // Ativar + "emailActivateTitle" => "Ativação de email", + "emailActivateBody" => "Acabamos de enviar um email para você com um código para confirmar seu endereço de e-mail. Copie esse código e cole abaixo.", + "emailActivateSubject" => "Seu código de ativação", + "emailActivateMailBody" => "Use o código abaixo para ativar sua conta e começar a usar o site.", + "invalidActivateToken" => "O código estava incorreto.", + "needActivate" => "Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.", + + // Grupos + "unknownGroup" => "{0} não é um grupo válido.", + "missingTitle" => "Os grupos devem ter um título.", + + // Permissões + "unknownPermission" => "{0} não é uma permissão válida." +]; From b0dac9e446b934f6acba3c2189abb3adc7451d99 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Tue, 31 Jan 2023 22:49:26 -0300 Subject: [PATCH 30/39] translate pt-BR. Signed-off-by: caosdp-rs --- src/Language/pt-BR/Auth.php | 42 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index bcceac58e..41433bcb4 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -17,7 +17,7 @@ 'oldToken' => 'O token de acesso expirou.', 'noUserEntity' => 'A entidade de usuário deve ser fornecida para validação de senha.', 'invalidEmail' => 'Não foi possível verificar se o endereço de email corresponde ao e-mail registrado.', - 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para "{0}".', + 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para '{0}'.', 'throttled' => 'Muitas solicitações feitas a partir deste endereço IP. Você pode tentar novamente em {0} segundos.', 'notEnoughPrivilege' => 'Você não tem a permissão necessária para realizar a operação desejada.', @@ -69,32 +69,32 @@ 'emailInfo' => 'Algumas informações sobre a pessoa:', 'emailIpAddress' => 'Endereço IP:', - "emailDevice" => "Dispositivo:", - "emailDate" => "Data:", + 'emailDevice' => 'Dispositivo:', + 'emailDate' => 'Data:', // 2FA - "email2FATitle" => "Autenticação de dois fatores", - "confirmEmailAddress" => "Confirme seu endereço de e-mail.", - "emailEnterCode" => "Confirme seu email", - "emailConfirmCode" => "Insira o código de 6 dígitos que acabamos de enviar para seu endereço de e-mail.", - "email2FASubject" => "Seu código de autenticação", - "email2FAMailBody" => "Seu código de autenticação é:", - "invalid2FAToken" => "O código estava incorreto.", - "need2FA" => "Você deve concluir uma verificação de dois fatores.", - "needVerification" => "Verifique seu e-mail para concluir a ativação da conta.", + 'email2FATitle' => 'Autenticação de dois fatores', + 'confirmEmailAddress' => 'Confirme seu endereço de e-mail.', + 'emailEnterCode' => 'Confirme seu email', + 'emailConfirmCode' => 'Insira o código de 6 dígitos que acabamos de enviar para seu endereço de e-mail.', + 'email2FASubject' => 'Seu código de autenticação', + 'email2FAMailBody' => 'Seu código de autenticação é:', + 'invalid2FAToken' => 'O código estava incorreto.', + 'need2FA' => 'Você deve concluir uma verificação de dois fatores.', + 'needVerification' => 'Verifique seu e-mail para concluir a ativação da conta.', // Ativar - "emailActivateTitle" => "Ativação de email", - "emailActivateBody" => "Acabamos de enviar um email para você com um código para confirmar seu endereço de e-mail. Copie esse código e cole abaixo.", - "emailActivateSubject" => "Seu código de ativação", - "emailActivateMailBody" => "Use o código abaixo para ativar sua conta e começar a usar o site.", - "invalidActivateToken" => "O código estava incorreto.", - "needActivate" => "Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.", + 'emailActivateTitle' => 'Ativação de email', + 'emailActivateBody' => 'Acabamos de enviar um email para você com um código para confirmar seu endereço de e-mail. Copie esse código e cole abaixo.', + 'emailActivateSubject' => 'Seu código de ativação', + 'emailActivateMailBody' => 'Use o código abaixo para ativar sua conta e começar a usar o site.', + 'invalidActivateToken' => 'O código estava incorreto.', + 'needActivate' => 'Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.', // Grupos - "unknownGroup" => "{0} não é um grupo válido.", - "missingTitle" => "Os grupos devem ter um título.", + 'unknownGroup' => '{0} não é um grupo válido.', + 'missingTitle' => 'Os grupos devem ter um título.', // Permissões - "unknownPermission" => "{0} não é uma permissão válida." + 'unknownPermission' => '{0} não é uma permissão válida.' ]; From 891979d1e21cc204f21334dfe5e53250bdd4b661 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Tue, 31 Jan 2023 22:50:16 -0300 Subject: [PATCH 31/39] translate pt-BR. Signed-off-by: caosdp-rs --- src/Language/pt-BR/Auth.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index 41433bcb4..9dd22ae53 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -17,7 +17,7 @@ 'oldToken' => 'O token de acesso expirou.', 'noUserEntity' => 'A entidade de usuário deve ser fornecida para validação de senha.', 'invalidEmail' => 'Não foi possível verificar se o endereço de email corresponde ao e-mail registrado.', - 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para '{0}'.', + 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para "{0}".', 'throttled' => 'Muitas solicitações feitas a partir deste endereço IP. Você pode tentar novamente em {0} segundos.', 'notEnoughPrivilege' => 'Você não tem a permissão necessária para realizar a operação desejada.', From ea069a9f0701a594613e0ba41f42afc5735a112e Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Wed, 1 Feb 2023 02:41:57 -0300 Subject: [PATCH 32/39] Test Brazilian Signed-off-by: caosdp-rs --- .../Language/AbstractTranslationTestCase.php | 2 +- tests/Language/BrazilianTranslationTest.php | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 tests/Language/BrazilianTranslationTest.php diff --git a/tests/Language/AbstractTranslationTestCase.php b/tests/Language/AbstractTranslationTestCase.php index ef768f884..b98f850da 100644 --- a/tests/Language/AbstractTranslationTestCase.php +++ b/tests/Language/AbstractTranslationTestCase.php @@ -66,7 +66,7 @@ abstract class AbstractTranslationTestCase extends TestCase // NorwegianTranslationTest::class => 'no', // PolishTranslationTest::class => 'pl', // PortugueseTranslationTest::class => 'pt', - // BrazilianTranslationTest::class => 'pt-BR', + BrazilianTranslationTest::class => 'pt-BR', // RussianTranslationTest::class => 'ru', // SinhalaTranslationTest::class => 'si', SlovakTranslationTest::class => 'sk', diff --git a/tests/Language/BrazilianTranslationTest.php b/tests/Language/BrazilianTranslationTest.php new file mode 100644 index 000000000..2c81aa605 --- /dev/null +++ b/tests/Language/BrazilianTranslationTest.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Tests\Language; + +/** + * @internal + */ +final class BrazilianTranslationTest extends AbstractTranslationTestCase +{ +} From 9b9b5acc1b3ea4b337a0d23313839c39ea4eaaea Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Wed, 1 Feb 2023 19:01:30 -0300 Subject: [PATCH 33/39] php csfix Signed-off-by: caosdp-rs --- src/Language/pt-BR/Auth.php | 42 +++++++++---------- .../Language/AbstractTranslationTestCase.php | 2 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index 9dd22ae53..c97cc0f7e 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -41,13 +41,13 @@ 'needAccount' => 'Precisa de uma conta?', 'rememberMe' => 'Lembrar de mim?', 'forgotPassword' => 'Esqueceu sua senha?', - 'useMagicLink' => 'Use um Link de Login', - 'magicLinkSubject' => 'Seu Link de Login', + 'useMagicLink' => 'Use um Link de Login', + 'magicLinkSubject' => 'Seu Link de Login', 'magicTokenNotFound' => 'Não foi possível verificar o link.', - 'magicLinkExpired' => 'Desculpe, o link expirou.', - 'checkYourEmail' => 'Verifique seu e-mail!', - 'magicLinkDetails' => 'Acabamos de enviar um e-mail com um link de Login. Ele é válido apenas por {0} minutos.', - 'successLogout' => 'Você saiu com sucesso.', + 'magicLinkExpired' => 'Desculpe, o link expirou.', + 'checkYourEmail' => 'Verifique seu e-mail!', + 'magicLinkDetails' => 'Acabamos de enviar um e-mail com um link de Login. Ele é válido apenas por {0} minutos.', + 'successLogout' => 'Você saiu com sucesso.', // Senhas 'errorPasswordLength' => 'As senhas devem ter pelo menos {0, number} caracteres.', @@ -70,31 +70,31 @@ 'emailIpAddress' => 'Endereço IP:', 'emailDevice' => 'Dispositivo:', - 'emailDate' => 'Data:', + 'emailDate' => 'Data:', // 2FA - 'email2FATitle' => 'Autenticação de dois fatores', + 'email2FATitle' => 'Autenticação de dois fatores', 'confirmEmailAddress' => 'Confirme seu endereço de e-mail.', - 'emailEnterCode' => 'Confirme seu email', - 'emailConfirmCode' => 'Insira o código de 6 dígitos que acabamos de enviar para seu endereço de e-mail.', - 'email2FASubject' => 'Seu código de autenticação', - 'email2FAMailBody' => 'Seu código de autenticação é:', - 'invalid2FAToken' => 'O código estava incorreto.', - 'need2FA' => 'Você deve concluir uma verificação de dois fatores.', - 'needVerification' => 'Verifique seu e-mail para concluir a ativação da conta.', + 'emailEnterCode' => 'Confirme seu email', + 'emailConfirmCode' => 'Insira o código de 6 dígitos que acabamos de enviar para seu endereço de e-mail.', + 'email2FASubject' => 'Seu código de autenticação', + 'email2FAMailBody' => 'Seu código de autenticação é:', + 'invalid2FAToken' => 'O código estava incorreto.', + 'need2FA' => 'Você deve concluir uma verificação de dois fatores.', + 'needVerification' => 'Verifique seu e-mail para concluir a ativação da conta.', // Ativar - 'emailActivateTitle' => 'Ativação de email', - 'emailActivateBody' => 'Acabamos de enviar um email para você com um código para confirmar seu endereço de e-mail. Copie esse código e cole abaixo.', - 'emailActivateSubject' => 'Seu código de ativação', + 'emailActivateTitle' => 'Ativação de email', + 'emailActivateBody' => 'Acabamos de enviar um email para você com um código para confirmar seu endereço de e-mail. Copie esse código e cole abaixo.', + 'emailActivateSubject' => 'Seu código de ativação', 'emailActivateMailBody' => 'Use o código abaixo para ativar sua conta e começar a usar o site.', - 'invalidActivateToken' => 'O código estava incorreto.', - 'needActivate' => 'Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.', + 'invalidActivateToken' => 'O código estava incorreto.', + 'needActivate' => 'Você deve concluir seu registro confirmando o código enviado para seu endereço de e-mail.', // Grupos 'unknownGroup' => '{0} não é um grupo válido.', 'missingTitle' => 'Os grupos devem ter um título.', // Permissões - 'unknownPermission' => '{0} não é uma permissão válida.' + 'unknownPermission' => '{0} não é uma permissão válida.', ]; diff --git a/tests/Language/AbstractTranslationTestCase.php b/tests/Language/AbstractTranslationTestCase.php index b98f850da..6b8edc707 100644 --- a/tests/Language/AbstractTranslationTestCase.php +++ b/tests/Language/AbstractTranslationTestCase.php @@ -66,7 +66,7 @@ abstract class AbstractTranslationTestCase extends TestCase // NorwegianTranslationTest::class => 'no', // PolishTranslationTest::class => 'pl', // PortugueseTranslationTest::class => 'pt', - BrazilianTranslationTest::class => 'pt-BR', + BrazilianTranslationTest::class => 'pt-BR', // RussianTranslationTest::class => 'ru', // SinhalaTranslationTest::class => 'si', SlovakTranslationTest::class => 'sk', From 9bd02000571938f09c723064d840a55614d7a6ca Mon Sep 17 00:00:00 2001 From: caosdp-rs <65447885+caosdp-rs@users.noreply.github.com> Date: Wed, 1 Feb 2023 19:02:25 -0300 Subject: [PATCH 34/39] Update src/Language/pt-BR/Auth.php Co-authored-by: Pooya Parsa Dadashi Signed-off-by: caosdp-rs --- src/Language/pt-BR/Auth.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index c97cc0f7e..06ffe01db 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace CodeIgniter\Shield\Language\en; +namespace CodeIgniter\Shield\Language\pt-BR; return [ // Exceções From 06d3b8ead3981e4623b9c42a03cf89c1e210f138 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Wed, 1 Feb 2023 20:52:52 -0300 Subject: [PATCH 35/39] update signature Signed-off-by: caosdp-rs --- src/Language/pt-BR/Auth.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index 06ffe01db..c25260601 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -2,6 +2,7 @@ declare(strict_types=1); + namespace CodeIgniter\Shield\Language\pt-BR; return [ From 022a96a7b2ff2a957801459ad6d35c3c6699bc72 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Wed, 1 Feb 2023 22:22:03 -0300 Subject: [PATCH 36/39] update namespace --- src/Language/pt-BR/Auth.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index c25260601..e4b6848d3 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -3,8 +3,6 @@ declare(strict_types=1); -namespace CodeIgniter\Shield\Language\pt-BR; - return [ // Exceções 'unknownAuthenticator' => '{0} não é um autenticador válido.', From d8bbd05f79aa76d4b741d69e0eba7bf635d7ea91 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Thu, 2 Feb 2023 02:34:24 -0300 Subject: [PATCH 37/39] Teste --- src/Language/pt-BR/Auth.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index e4b6848d3..d69d9fd1e 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -2,9 +2,8 @@ declare(strict_types=1); - return [ - // Exceções + // Exceptions 'unknownAuthenticator' => '{0} não é um autenticador válido.', 'unknownUserProvider' => 'Não foi possível determinar o provedor de usuário a ser usado.', 'invalidUser' => 'Não foi possível localizar o usuário especificado.', @@ -16,7 +15,7 @@ 'oldToken' => 'O token de acesso expirou.', 'noUserEntity' => 'A entidade de usuário deve ser fornecida para validação de senha.', 'invalidEmail' => 'Não foi possível verificar se o endereço de email corresponde ao e-mail registrado.', - 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para "{0}".', + 'unableSendEmailToUser' => 'Desculpe, houve um problema ao enviar o email. Não pudemos enviar um email para {0}.', 'throttled' => 'Muitas solicitações feitas a partir deste endereço IP. Você pode tentar novamente em {0} segundos.', 'notEnoughPrivilege' => 'Você não tem a permissão necessária para realizar a operação desejada.', From 4f033e7bca90ef3dc26effdd0d0a249a15c3d340 Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Thu, 2 Feb 2023 02:47:18 -0300 Subject: [PATCH 38/39] Teste. --- src/Language/pt-BR/Auth.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Language/pt-BR/Auth.php b/src/Language/pt-BR/Auth.php index d69d9fd1e..3afcb3837 100644 --- a/src/Language/pt-BR/Auth.php +++ b/src/Language/pt-BR/Auth.php @@ -66,9 +66,8 @@ // E-mails Globais 'emailInfo' => 'Algumas informações sobre a pessoa:', 'emailIpAddress' => 'Endereço IP:', - - 'emailDevice' => 'Dispositivo:', - 'emailDate' => 'Data:', + 'emailDevice' => 'Dispositivo:', + 'emailDate' => 'Data:', // 2FA 'email2FATitle' => 'Autenticação de dois fatores', From 082ec028c8647bf58cc093b92793e1c7f5e2752e Mon Sep 17 00:00:00 2001 From: caosdp-rs Date: Thu, 2 Feb 2023 03:34:35 -0300 Subject: [PATCH 39/39] Ignore the login translate is br same en --- tests/Language/BrazilianTranslationTest.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/Language/BrazilianTranslationTest.php b/tests/Language/BrazilianTranslationTest.php index 2c81aa605..10a598898 100644 --- a/tests/Language/BrazilianTranslationTest.php +++ b/tests/Language/BrazilianTranslationTest.php @@ -18,4 +18,8 @@ */ final class BrazilianTranslationTest extends AbstractTranslationTestCase { + protected array $excludedLocaleKeyTranslations = [ + 'Auth.password', + 'Auth.login', + ]; }