Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dd3d931468 | ||
|
|
7a07f1e81d | ||
|
|
92524ae97a | ||
|
|
1c89f6da24 | ||
|
|
d1a3e3b859 | ||
|
|
79ae594d54 |
@@ -631,6 +631,12 @@ If both the [PAPERLESS_ACCOUNT_DEFAULT_GROUPS](#PAPERLESS_ACCOUNT_DEFAULT_GROUPS
|
|||||||
|
|
||||||
If you do not have a working email server set up you should set this to 'none'.
|
If you do not have a working email server set up you should set this to 'none'.
|
||||||
|
|
||||||
|
#### [`PAPERLESS_ACCOUNT_EMAIL_UNKNOWN_ACCOUNTS=<bool>`](#PAPERLESS_ACCOUNT_EMAIL_UNKNOWN_ACCOUNTS) {#PAPERLESS_ACCOUNT_EMAIL_UNKNOWN_ACCOUNTS}
|
||||||
|
|
||||||
|
: See the relevant [django-allauth documentation](https://docs.allauth.org/en/latest/account/configuration.html)
|
||||||
|
|
||||||
|
Defaults to True (from allauth)
|
||||||
|
|
||||||
#### [`PAPERLESS_DISABLE_REGULAR_LOGIN=<bool>`](#PAPERLESS_DISABLE_REGULAR_LOGIN) {#PAPERLESS_DISABLE_REGULAR_LOGIN}
|
#### [`PAPERLESS_DISABLE_REGULAR_LOGIN=<bool>`](#PAPERLESS_DISABLE_REGULAR_LOGIN) {#PAPERLESS_DISABLE_REGULAR_LOGIN}
|
||||||
|
|
||||||
: Disables the regular frontend username / password login, i.e. once you have setup SSO. Note that this setting does not disable the Django admin login nor logging in with local credentials via the API. To prevent access to the Django admin, consider blocking `/admin/` in your [web server or reverse proxy configuration](https://github.com/paperless-ngx/paperless-ngx/wiki/Using-a-Reverse-Proxy-with-Paperless-ngx).
|
: Disables the regular frontend username / password login, i.e. once you have setup SSO. Note that this setting does not disable the Django admin login nor logging in with local credentials via the API. To prevent access to the Django admin, consider blocking `/admin/` in your [web server or reverse proxy configuration](https://github.com/paperless-ngx/paperless-ngx/wiki/Using-a-Reverse-Proxy-with-Paperless-ngx).
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
</svg>
|
</svg>
|
||||||
<div class="ms-2 ms-md-3 d-inline-block" [class.d-md-none]="slimSidebarEnabled">
|
<div class="ms-2 ms-md-3 d-inline-block" [class.d-md-none]="slimSidebarEnabled">
|
||||||
@if (customAppTitle?.length) {
|
@if (customAppTitle?.length) {
|
||||||
<div class="d-flex flex-column align-items-start">
|
<div class="d-flex flex-column align-items-start custom-title">
|
||||||
<span class="title">{{customAppTitle}}</span>
|
<span class="title">{{customAppTitle}}</span>
|
||||||
<span class="byline text-uppercase font-monospace" i18n>by Paperless-ngx</span>
|
<span class="byline text-uppercase font-monospace" i18n>by Paperless-ngx</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -244,7 +244,7 @@ main {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 768px) {
|
@media screen and (min-width: 366px) and (max-width: 768px) {
|
||||||
.navbar-toggler {
|
.navbar-toggler {
|
||||||
// compensate for 2 buttons on the right
|
// compensate for 2 buttons on the right
|
||||||
margin-right: 45px;
|
margin-right: 45px;
|
||||||
@@ -257,6 +257,13 @@ main {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 345px) {
|
||||||
|
.custom-title {
|
||||||
|
max-width: 110px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
:host ::ng-deep .dropdown.show .dropdown-toggle,
|
:host ::ng-deep .dropdown.show .dropdown-toggle,
|
||||||
:host ::ng-deep .dropdown-toggle:hover {
|
:host ::ng-deep .dropdown-toggle:hover {
|
||||||
opacity: 0.7;
|
opacity: 0.7;
|
||||||
|
|||||||
-2
@@ -492,11 +492,9 @@ describe('FilterableDropdownComponent & FilterableDropdownSelectionModel', () =>
|
|||||||
component.selectionModel.items = items
|
component.selectionModel.items = items
|
||||||
component.selectionModel = selectionModel
|
component.selectionModel = selectionModel
|
||||||
component.selectionModel.intersection = Intersection.Include
|
component.selectionModel.intersection = Intersection.Include
|
||||||
console.log(component.selectionModel.items[0])
|
|
||||||
component.selectionModel.set(null, ToggleableItemState.Selected)
|
component.selectionModel.set(null, ToggleableItemState.Selected)
|
||||||
component.selectionModel.intersection = Intersection.Exclude
|
component.selectionModel.intersection = Intersection.Exclude
|
||||||
component.selectionModel.toggleIntersection()
|
component.selectionModel.toggleIntersection()
|
||||||
console.log(component.selectionModel)
|
|
||||||
expect(component.selectionModel.getExcludedItems()).toEqual([
|
expect(component.selectionModel.getExcludedItems()).toEqual([
|
||||||
negativeNullItem,
|
negativeNullItem,
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -825,10 +825,6 @@ export class DocumentDetailComponent
|
|||||||
error: (error) => {
|
error: (error) => {
|
||||||
this.networkActive = false
|
this.networkActive = false
|
||||||
const canEdit =
|
const canEdit =
|
||||||
this.permissionsService.currentUserCan(
|
|
||||||
PermissionAction.Change,
|
|
||||||
PermissionType.Document
|
|
||||||
) &&
|
|
||||||
this.permissionsService.currentUserHasObjectPermissions(
|
this.permissionsService.currentUserHasObjectPermissions(
|
||||||
PermissionAction.Change,
|
PermissionAction.Change,
|
||||||
this.document
|
this.document
|
||||||
|
|||||||
@@ -602,7 +602,6 @@ export class SettingsService {
|
|||||||
)
|
)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.toastService.showError(errorMessage)
|
this.toastService.showError(errorMessage)
|
||||||
console.log(error)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.storeSettings()
|
this.storeSettings()
|
||||||
@@ -614,7 +613,6 @@ export class SettingsService {
|
|||||||
},
|
},
|
||||||
error: (e) => {
|
error: (e) => {
|
||||||
this.toastService.showError(errorMessage)
|
this.toastService.showError(errorMessage)
|
||||||
console.log(e)
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -636,7 +634,6 @@ export class SettingsService {
|
|||||||
this.toastService.showError(
|
this.toastService.showError(
|
||||||
'Error migrating update checking setting'
|
'Error migrating update checking setting'
|
||||||
)
|
)
|
||||||
console.log(e)
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
--pngx-bg-alt2: var(--bs-gray-200); // #e9ecef
|
--pngx-bg-alt2: var(--bs-gray-200); // #e9ecef
|
||||||
--pngx-bg-disabled: #f7f7f7;
|
--pngx-bg-disabled: #f7f7f7;
|
||||||
--pngx-focus-alpha: 0.3;
|
--pngx-focus-alpha: 0.3;
|
||||||
--pngx-toast-max-width: 360px;
|
--pngx-toast-max-width: 340px;
|
||||||
--bs-info: var(--pngx-bg-alt2);
|
--bs-info: var(--pngx-bg-alt2);
|
||||||
--bs-info-rgb: 233, 236, 239;
|
--bs-info-rgb: 233, 236, 239;
|
||||||
@media screen and (min-width: 1024px) {
|
@media screen and (min-width: 1024px) {
|
||||||
|
|||||||
@@ -870,7 +870,7 @@ class BasicUserSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class NotesSerializer(serializers.ModelSerializer):
|
class NotesSerializer(serializers.ModelSerializer):
|
||||||
user = BasicUserSerializer()
|
user = BasicUserSerializer(read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Note
|
model = Note
|
||||||
@@ -893,7 +893,7 @@ class DocumentSerializer(
|
|||||||
created_date = serializers.DateField(required=False)
|
created_date = serializers.DateField(required=False)
|
||||||
page_count = SerializerMethodField()
|
page_count = SerializerMethodField()
|
||||||
|
|
||||||
notes = NotesSerializer(many=True, required=False)
|
notes = NotesSerializer(many=True, required=False, read_only=True)
|
||||||
|
|
||||||
custom_fields = CustomFieldInstanceSerializer(
|
custom_fields = CustomFieldInstanceSerializer(
|
||||||
many=True,
|
many=True,
|
||||||
|
|||||||
@@ -507,6 +507,11 @@ ACCOUNT_EMAIL_VERIFICATION = os.getenv(
|
|||||||
"optional",
|
"optional",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
ACCOUNT_EMAIL_UNKNOWN_ACCOUNTS = __get_boolean(
|
||||||
|
"PAPERLESS_ACCOUNT_EMAIL_UNKNOWN_ACCOUNTS",
|
||||||
|
"True",
|
||||||
|
)
|
||||||
|
|
||||||
ACCOUNT_SESSION_REMEMBER = __get_boolean("PAPERLESS_ACCOUNT_SESSION_REMEMBER", "True")
|
ACCOUNT_SESSION_REMEMBER = __get_boolean("PAPERLESS_ACCOUNT_SESSION_REMEMBER", "True")
|
||||||
SESSION_EXPIRE_AT_BROWSER_CLOSE = not ACCOUNT_SESSION_REMEMBER
|
SESSION_EXPIRE_AT_BROWSER_CLOSE = not ACCOUNT_SESSION_REMEMBER
|
||||||
SESSION_COOKIE_AGE = int(
|
SESSION_COOKIE_AGE = int(
|
||||||
|
|||||||
Reference in New Issue
Block a user