Merge pull request #2449 from pixelfed/staging

Staging
This commit is contained in:
daniel 2020-11-25 10:13:47 -07:00 committed by GitHub
commit c565d35bca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 137 additions and 49 deletions

View file

@ -96,6 +96,9 @@
- Updated Profile component, make modals scrollable. ([d1c664fa](https://github.com/pixelfed/pixelfed/commit/d1c664fa)) - Updated Profile component, make modals scrollable. ([d1c664fa](https://github.com/pixelfed/pixelfed/commit/d1c664fa))
- Updated PostComponent, fixes #2351. ([7a62a42a](https://github.com/pixelfed/pixelfed/commit/7a62a42a)) - Updated PostComponent, fixes #2351. ([7a62a42a](https://github.com/pixelfed/pixelfed/commit/7a62a42a))
- Updated DirectMessageController, fix pgsql bug. ([f1c28e7d](https://github.com/pixelfed/pixelfed/commit/f1c28e7d)) - Updated DirectMessageController, fix pgsql bug. ([f1c28e7d](https://github.com/pixelfed/pixelfed/commit/f1c28e7d))
- Updated RegisterController, make the minimum user password length configurable. ([09479c02](https://github.com/pixelfed/pixelfed/commit/09479c02))
- Updated AuthServiceProvider, added support for configurable OAuth tokens and refresh tokens lifetime. ([7cfae612](https://github.com/pixelfed/pixelfed/commit/7cfae612))
- Updated EmailService, make case insensitive. ([1b41d664](https://github.com/pixelfed/pixelfed/commit/1b41d664))
## [v0.10.9 (2020-04-17)](https://github.com/pixelfed/pixelfed/compare/v0.10.8...v0.10.9) ## [v0.10.9 (2020-04-17)](https://github.com/pixelfed/pixelfed/compare/v0.10.8...v0.10.9)
### Added ### Added
@ -153,6 +156,7 @@
- Updated StatusTransformer, fixes #[2113](https://github.com/pixelfed/pixelfed/issues/2113) ([eefa6e0d](https://github.com/pixelfed/pixelfed/commit/eefa6e0d)) - Updated StatusTransformer, fixes #[2113](https://github.com/pixelfed/pixelfed/issues/2113) ([eefa6e0d](https://github.com/pixelfed/pixelfed/commit/eefa6e0d))
- Updated InternalApiController, limit remote profile ui to remote profiles ([d918a68e](https://github.com/pixelfed/pixelfed/commit/d918a68e)) - Updated InternalApiController, limit remote profile ui to remote profiles ([d918a68e](https://github.com/pixelfed/pixelfed/commit/d918a68e))
- Updated NotificationCard, fix pagination bug #[2019](https://github.com/pixelfed/pixelfed/issues/2019) ([32beaad5](https://github.com/pixelfed/pixelfed/commit/32beaad5)) - Updated NotificationCard, fix pagination bug #[2019](https://github.com/pixelfed/pixelfed/issues/2019) ([32beaad5](https://github.com/pixelfed/pixelfed/commit/32beaad5))
-
## [v0.10.8 (2020-01-29)](https://github.com/pixelfed/pixelfed/compare/v0.10.7...v0.10.8) ## [v0.10.8 (2020-01-29)](https://github.com/pixelfed/pixelfed/compare/v0.10.7...v0.10.8)
### Added ### Added

View file

@ -115,7 +115,7 @@ class RegisterController extends Controller
'name' => 'nullable|string|max:'.config('pixelfed.max_name_length'), 'name' => 'nullable|string|max:'.config('pixelfed.max_name_length'),
'username' => $usernameRules, 'username' => $usernameRules,
'email' => $emailRules, 'email' => $emailRules,
'password' => 'required|string|min:12|confirmed', 'password' => 'required|string|min:'.config('pixelfed.min_password_length').'|confirmed',
]; ];
return Validator::make($data, $rules); return Validator::make($data, $rules);

View file

@ -42,6 +42,13 @@ class AuthLogin
protected function userProfile($user) protected function userProfile($user)
{ {
if (empty($user->profile)) { if (empty($user->profile)) {
if($user->created_at->lt(now()->subDays(1)) && empty($user->status)) {
$p = Profile::withTrashed()->whereUserId($user->id)->first();
if($p) {
$p->restore();
return;
}
}
DB::transaction(function() use($user) { DB::transaction(function() use($user) {
$profile = Profile::firstOrCreate(['user_id' => $user->id]); $profile = Profile::firstOrCreate(['user_id' => $user->id]);
if($profile->wasRecentlyCreated == true) { if($profile->wasRecentlyCreated == true) {

View file

@ -28,8 +28,8 @@ class AuthServiceProvider extends ServiceProvider
if(config('pixelfed.oauth_enabled')) { if(config('pixelfed.oauth_enabled')) {
Passport::routes(null, ['middleware' => ['twofactor', \Fruitcake\Cors\HandleCors::class]]); Passport::routes(null, ['middleware' => ['twofactor', \Fruitcake\Cors\HandleCors::class]]);
Passport::tokensExpireIn(now()->addDays(15)); Passport::tokensExpireIn(now()->addDays(config('instance.oauth.token_expiration', 15)));
Passport::refreshTokensExpireIn(now()->addDays(30)); Passport::refreshTokensExpireIn(now()->addDays(config('instance.oauth.refresh_expiration', 30)));
Passport::enableImplicitGrant(); Passport::enableImplicitGrant();
if(config('instance.oauth.pat.enabled')) { if(config('instance.oauth.pat.enabled')) {
Passport::personalAccessClientId(config('instance.oauth.pat.id')); Passport::personalAccessClientId(config('instance.oauth.pat.id'));

View file

@ -12,7 +12,7 @@ class EmailService {
$parts = explode('@', $email); $parts = explode('@', $email);
return in_array(last($parts), self::bannedDomains()); return in_array(strtolower(last($parts)), array_map('strtolower', self::bannedDomains()));
} }
public static function bannedDomains() public static function bannedDomains()

View file

@ -55,6 +55,8 @@ return [
], ],
'oauth' => [ 'oauth' => [
'token_expiration' => env('OAUTH_TOKEN_DAYS', 15),
'refresh_expiration' => env('OAUTH_REFRESH_DAYS', 30),
'pat' => [ 'pat' => [
'enabled' => env('OAUTH_PAT_ENABLED', false), 'enabled' => env('OAUTH_PAT_ENABLED', false),
'id' => env('OAUTH_PAT_ID'), 'id' => env('OAUTH_PAT_ID'),

View file

@ -119,6 +119,16 @@ return [
*/ */
'max_name_length' => env('MAX_NAME_LENGTH', 30), 'max_name_length' => env('MAX_NAME_LENGTH', 30),
/*
|--------------------------------------------------------------------------
| Password minimum length limit
|--------------------------------------------------------------------------
|
| Change the minimum length limit for user passwords.
|
*/
'min_password_length' => env('MIN_PASSWORD_LENGTH', 12),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Album size limit | Album size limit

View file

@ -4,7 +4,7 @@ FROM php:7.4-apache-buster
COPY contrib/docker/php.production.ini "$PHP_INI_DIR/php.ini" COPY contrib/docker/php.production.ini "$PHP_INI_DIR/php.ini"
# Install Composer # Install Composer
ENV COMPOSER_VERSION=1.10.9 \ ENV COMPOSER_VERSION=1.10.11 \
COMPOSER_HOME=/var/www/.composer \ COMPOSER_HOME=/var/www/.composer \
COMPOSER_MEMORY_LIMIT=-1 \ COMPOSER_MEMORY_LIMIT=-1 \
PATH="~/.composer/vendor/bin:./vendor/bin:${PATH}" PATH="~/.composer/vendor/bin:./vendor/bin:${PATH}"

View file

@ -20,5 +20,7 @@ return [
'blockingAccounts' => 'Blocage des comptes', 'blockingAccounts' => 'Blocage des comptes',
'safetyTips' => 'Conseils de sécurité', 'safetyTips' => 'Conseils de sécurité',
'reportSomething' => 'Signaler quelque chose', 'reportSomething' => 'Signaler quelque chose',
'dataPolicy' => 'Politique en matière de données' 'dataPolicy' => 'Politique en matière de données',
'taggingPeople' => 'Mentionner des personnes'
]; ];

View file

@ -14,6 +14,6 @@ return [
*/ */
'failed' => 'As credenciais non constan nos nosos rexistros.', 'failed' => 'As credenciais non constan nos nosos rexistros.',
'throttle' => 'Demasiados intentos de conexión. Por favor, inténteo de novo en :seconds seconds.', 'throttle' => 'Demasiados intentos de conexión. Por favor, inténtao de novo en :seconds segundos.',
]; ];

View file

@ -0,0 +1,11 @@
<?php
return [
'compose' => [
'invalid' => [
'album' => 'Debe conter unha soa foto ou vídeo ou varias fotos.',
],
],
];

View file

@ -0,0 +1,28 @@
<?php
return [
'helpcenter' => 'Centro de Axuda',
'whatsnew' => 'Novidades',
'gettingStarted' => 'Comezar',
'sharingMedia' => 'Compartir Multimedia',
'profile' => 'Perfil',
'stories' => 'Historias',
'hashtags' => 'Cancelos',
'discover' => 'Descubrir',
'directMessages' => 'Mensaxes Directas',
'timelines' => 'Cronoloxías',
'embed' => 'Incrustar',
'communityGuidelines' => 'Guías da comunidade',
'whatIsTheFediverse' => 'Que é o fediverso?',
'controllingVisibility' => 'Control da visibilidade',
'blockingAccounts' => 'Bloqueo de contas',
'safetyTips' => 'Seguridade',
'reportSomething' => 'Denunicas',
'dataPolicy' => 'Política de datos',
'taggingPeople' => 'Etiquetar persoas'
];

View file

@ -1,13 +1,19 @@
<?php <?php
return [ return [
'search' => 'Buscar',
'home' => 'Inicio',
'local' => 'Local',
'network' => 'Rede',
'discover' => 'Descubrir',
'viewMyProfile' => 'Ver perfil', 'viewMyProfile' => 'Ver perfil',
'myTimeline' => 'A miña liña temporal', 'myProfile' => 'O meu perfil',
'publicTimeline' => 'Liña temporal pública', 'myTimeline' => 'Cronoloxía',
'publicTimeline' => 'Cronoloxía pública',
'remoteFollow' => 'Seguimento remoto', 'remoteFollow' => 'Seguimento remoto',
'settings' => 'Axustes', 'settings' => 'Axustes',
'admin' => 'Admin', 'admin' => 'Admin',
'logout' => 'Saír', 'logout' => 'Desconectar',
'directMessages' => 'Mensaxes directas',
'composePost' => 'Publicar',
]; ];

View file

@ -2,7 +2,11 @@
return [ return [
'likedPhoto' => 'gustoulle a súa foto.', 'likedPhoto' => 'gustoulle a túa publicación.',
'startedFollowingYou' => 'comezou a seguila.', 'likedComment' => 'gustoulle o teu comentario.',
'startedFollowingYou' => 'comezou a seguirte.',
'commented' => 'comentou na túa publicación.',
'mentionedYou' => 'mencionoute.',
'shared' => 'compartiu a túa publicación.',
]; ];

View file

@ -13,10 +13,10 @@ return [
| |
*/ */
'password' => 'Os contrasinais deben ser ao menos de seis caracteres e concordar na confirmación.', 'password' => 'Os contrasinais deben ter seis caracteres como mínimo e concordar na confirmación.',
'reset' => 'Restableceuse o seu contrasinal!', 'reset' => 'Restableceuse o teu contrasinal!',
'sent' => 'Acabamos de enviarlle unha ligazón para restablecer o contrasinal!', 'sent' => 'Se o email está na base de datos, recibirás unha ligazón para restablecer o contrasinal dentro duns minutos. Comproba o cartafol de spam se non recibes o email.',
'token' => 'Este testemuño de restablecemento de contrasinal non é válido.', 'token' => 'O testemuño de restablecemento do contrasinal non é válido.',
'user' => 'Non atopamos unha usuaria con ese enderezo de correo.', 'user' => 'Se o email está na base de datos, recibirás unha ligazón para restablecer o contrasinal dentro duns minutos. Comproba o cartafol de spam se non recibes o email.',
]; ];

View file

@ -4,5 +4,12 @@ return [
'emptyTimeline' => 'Esta usuaria aínda non publicou!', 'emptyTimeline' => 'Esta usuaria aínda non publicou!',
'emptyFollowers' => 'Esta usuaria aínda non ten seguidoras!', 'emptyFollowers' => 'Esta usuaria aínda non ten seguidoras!',
'emptyFollowing' => 'Esta usuaria aínda non segue a ninguén!', 'emptyFollowing' => 'Esta usuaria aínda non segue a ninguén!',
'savedWarning' => 'Só vostede pode ver o que gardou', 'emptySaved' => 'Aínda non gardaches ningunha publicación!',
'savedWarning' => 'Só podes ver o que gardaches',
'privateProfileWarning' => 'Esta conta é Privada',
'alreadyFollow' => 'Xa segues :username?',
'loginToSeeProfile' => 'para ver as súas fotos e vídeos.',
'status.disabled.header' => 'Perfil non dispoñible',
'status.disabled.body' => 'O perfil non está dipoñible neste intre, inténtao dentro dun anaco.',
]; ];

View file

@ -1,13 +1,20 @@
<?php <?php
return [ return [
'about' => 'Acerca de', 'about' => 'Acerca de',
'help' => 'Axuda', 'help' => 'Axuda',
'language' => 'Idioma', 'language' => 'Idioma',
'fediverse' => 'Fediverso', 'fediverse' => 'Fediverso',
'opensource' => 'Código aberto', 'opensource' => 'Código aberto',
'terms' => 'Termos', 'terms' => 'Termos',
'privacy' => 'Intimidade', 'privacy' => 'Privacidade',
'l10nWip' => 'Estamos a traballar no soporte da localización do servizo', 'l10nWip' => 'Estamos a traballar no sistema de tradución',
'currentLocale' => 'Locale actual', 'currentLocale' => 'Idioma actual',
'selectLocale' => 'Escolla un dos idiomas admitidos', 'selectLocale' => 'Elixe un dos idiomas incluídos',
'contact' => 'Contacto',
'contact-us' => 'Contacta con nós',
'places' => 'Lugares',
'profiles' => 'Perfís',
]; ];

View file

@ -2,6 +2,6 @@
return [ return [
'emptyPersonalTimeline' => 'A súa liña temporal está baldeira.', 'emptyPersonalTimeline' => 'A cronoloxía está baleira.',
]; ];

View file

@ -16,10 +16,10 @@ return [
'accepted' => 'O :attribute debe aceptarse.', 'accepted' => 'O :attribute debe aceptarse.',
'active_url' => 'O :attribute non é un URL válido.', 'active_url' => 'O :attribute non é un URL válido.',
'after' => 'A :attribute debe ser unha data posterior :date.', 'after' => 'A :attribute debe ser unha data posterior :date.',
'after_or_equal' => 'A :attribute debe ser unha data posterior ou igual a must be a date after or equal to :date.', 'after_or_equal' => 'A :attribute debe ser unha data posterior ou igual a :date.',
'alpha' => 'O :attribute só pode conter letras.', 'alpha' => 'O :attribute só pode conter letras.',
'alpha_dash' => 'O :attribute podería conter só letras, números e guións.', 'alpha_dash' => 'O :attribute pode conter só letras, números e trazos.',
'alpha_num' => 'O :attribute podería conter só letras e números.', 'alpha_num' => 'O :attribute pode conter só letras e números.',
'array' => 'A :attribute debe ser unha cadea.', 'array' => 'A :attribute debe ser unha cadea.',
'before' => 'A :attribute debe ser unha data anterior a :date.', 'before' => 'A :attribute debe ser unha data anterior a :date.',
'before_or_equal' => 'A :attribute debe ser unha data anterior ou igual a :date.', 'before_or_equal' => 'A :attribute debe ser unha data anterior ou igual a :date.',
@ -30,15 +30,15 @@ return [
'array' => 'O :attribute debe ter entre :min e :max elementos.', 'array' => 'O :attribute debe ter entre :min e :max elementos.',
], ],
'boolean' => 'O campo :attribute debe ser verdadeiro ou falso.', 'boolean' => 'O campo :attribute debe ser verdadeiro ou falso.',
'confirmed' => 'O :attribute de confirmación non coincide.', 'confirmed' => 'O :attribute de confirmación non concorda.',
'date' => 'A :attribute non é unha data válida.', 'date' => 'A :attribute non é unha data válida.',
'date_format' => 'O :attribute non segue o formato :format.', 'date_format' => 'O :attribute non segue o formato :format.',
'different' => ' :attribute e :other deben ser diferentes.', 'different' => ' :attribute e :other deben ser diferentes.',
'digits' => ' :attribute deben ser :digits díxitos.', 'digits' => ' :attribute deben ser :digits díxitos.',
'digits_between' => ' :attribute debe ter entre :min e :max díxitos.', 'digits_between' => ' :attribute debe ter entre :min e :max díxitos.',
'dimensions' => 'The :attribute ten unhas dimensións de imaxe non válidas.', 'dimensions' => ' :attribute ten unhas dimensións de imaxe non válidas.',
'distinct' => 'O campo :attribute ten un valor duplo.', 'distinct' => 'O campo :attribute ten un valor duplo.',
'email' => 'The :attribute debe ser un enderezo de correo válido.', 'email' => ' :attribute debe ser un enderezo de correo válido.',
'exists' => 'O :attribute escollido non é válido.', 'exists' => 'O :attribute escollido non é válido.',
'file' => ' :attribute debe ser un ficheiro.', 'file' => ' :attribute debe ser un ficheiro.',
'filled' => 'O campo :attribute debe ter un valor.', 'filled' => 'O campo :attribute debe ter un valor.',
@ -72,8 +72,8 @@ return [
'required' => 'O campo :attribute é requerido.', 'required' => 'O campo :attribute é requerido.',
'required_if' => 'O campo :attribute é requerido cando :other é :value.', 'required_if' => 'O campo :attribute é requerido cando :other é :value.',
'required_unless' => 'O campo :attribute é requerido a non ser que :other esté en :values.', 'required_unless' => 'O campo :attribute é requerido a non ser que :other esté en :values.',
'required_with' => 'O campo :attribute é requerido cando :values é presente.', 'required_with' => 'O campo :attribute é requerido cando :values está presente.',
'required_with_all' => 'O campo :attribute é requerido cando :values é presente.', 'required_with_all' => 'O campo :attribute é requerido cando :values está presente.',
'required_without' => 'O campo :attribute é requerido cando :values non está presente.', 'required_without' => 'O campo :attribute é requerido cando :values non está presente.',
'required_without_all' => 'O campo :attribute é requerido cando non está presente :values.', 'required_without_all' => 'O campo :attribute é requerido cando non está presente :values.',
'same' => ' :attribute e :other deben coincidir.', 'same' => ' :attribute e :other deben coincidir.',

View file

@ -26,7 +26,7 @@
<div class="form-group"> <div class="form-group">
<div class="custom-control custom-checkbox"> <div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="trusted-device" name="trustDevice"> <input type="checkbox" class="custom-control-input" id="trusted-device" name="trustDevice">
<label class="custom-control-label text-muted" for="trusted-device">Don't ask me again, trust this device</label> <label class="custom-control-label text-muted" for="trusted-device">Trust this device and don't ask again</label>
</div> </div>
</div> </div>

View file

@ -52,9 +52,9 @@
<li class="nav-item"> <li class="nav-item">
<hr> <hr>
</li> </li>
{{-- <li class="nav-item pl-3 {{request()->is('settings/applications')?'active':''}}"> <li class="nav-item pl-3 {{request()->is('settings/applications')?'active':''}}">
<a class="nav-link font-weight-light text-muted" href="{{route('settings.applications')}}">Applications</a> <a class="nav-link font-weight-light text-muted" href="{{route('settings.applications')}}">Applications</a>
</li> --}} </li>
<li class="nav-item pl-3 {{request()->is('settings/developers')?'active':''}}"> <li class="nav-item pl-3 {{request()->is('settings/developers')?'active':''}}">
<a class="nav-link font-weight-light text-muted" href="{{route('settings.developers')}}">Developers</a> <a class="nav-link font-weight-light text-muted" href="{{route('settings.developers')}}">Developers</a>
</li> </li>