aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2024-09-17 23:35:54 +0200
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2024-09-18 00:15:19 +0200
commitb24e02e5df5c1825060be295d21eaa6001c3cd17 (patch)
treebbf05746d4b1764463738ceb24a1374530ec6047
parent26abc86eca7cf6ae95f20e1dc180774d11892aab (diff)
downloadnextcloud-server-b24e02e5df5c1825060be295d21eaa6001c3cd17.tar.gz
nextcloud-server-b24e02e5df5c1825060be295d21eaa6001c3cd17.zip
fix(core): profile design and pronouns supportfieat/profile-pronounces
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
-rw-r--r--build/integration/features/provisioning-v1.feature1454
-rw-r--r--core/src/views/Profile.vue25
-rw-r--r--dist/core-profile.js4
-rw-r--r--dist/core-profile.js.map2
-rw-r--r--lib/private/Profile/ProfileManager.php2
-rw-r--r--lib/public/Profile/IProfileManager.php3
6 files changed, 752 insertions, 738 deletions
diff --git a/build/integration/features/provisioning-v1.feature b/build/integration/features/provisioning-v1.feature
index a40afbab769..73e159464bd 100644
--- a/build/integration/features/provisioning-v1.feature
+++ b/build/integration/features/provisioning-v1.feature
@@ -2,62 +2,62 @@
# SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc.
# SPDX-License-Identifier: AGPL-3.0-only
Feature: provisioning
- Background:
- Given using api version "1"
-
- Scenario: Getting an not existing user
- Given As an "admin"
- When sending "GET" to "/cloud/users/test"
- Then the OCS status code should be "404"
- And the HTTP status code should be "200"
-
- Scenario: Listing all users
- Given As an "admin"
- When sending "GET" to "/cloud/users"
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
-
- Scenario: Create a user
- Given As an "admin"
- And user "brand-new-user" does not exist
- When sending "POST" to "/cloud/users" with
- | userid | brand-new-user |
- | password | 123456 |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- And user "brand-new-user" exists
-
- Scenario: Create an existing user
- Given As an "admin"
- And user "brand-new-user" exists
- When sending "POST" to "/cloud/users" with
- | userid | brand-new-user |
- | password | 123456 |
- Then the OCS status code should be "102"
- And the HTTP status code should be "200"
- And user "brand-new-user" has
- | id | brand-new-user |
- | displayname | brand-new-user |
- | email | |
- | phone | |
- | address | |
- | website | |
- | twitter | |
-
- Scenario: Get an existing user
- Given As an "admin"
- When sending "GET" to "/cloud/users/brand-new-user"
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
-
- Scenario: Getting all users
- Given As an "admin"
- And user "brand-new-user" exists
- And user "admin" exists
- When sending "GET" to "/cloud/users"
- Then users returned are
- | brand-new-user |
- | admin |
+ Background:
+ Given using api version "1"
+
+ Scenario: Getting an not existing user
+ Given As an "admin"
+ When sending "GET" to "/cloud/users/test"
+ Then the OCS status code should be "404"
+ And the HTTP status code should be "200"
+
+ Scenario: Listing all users
+ Given As an "admin"
+ When sending "GET" to "/cloud/users"
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+
+ Scenario: Create a user
+ Given As an "admin"
+ And user "brand-new-user" does not exist
+ When sending "POST" to "/cloud/users" with
+ | userid | brand-new-user |
+ | password | 123456 |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And user "brand-new-user" exists
+
+ Scenario: Create an existing user
+ Given As an "admin"
+ And user "brand-new-user" exists
+ When sending "POST" to "/cloud/users" with
+ | userid | brand-new-user |
+ | password | 123456 |
+ Then the OCS status code should be "102"
+ And the HTTP status code should be "200"
+ And user "brand-new-user" has
+ | id | brand-new-user |
+ | displayname | brand-new-user |
+ | email | |
+ | phone | |
+ | address | |
+ | website | |
+ | twitter | |
+
+ Scenario: Get an existing user
+ Given As an "admin"
+ When sending "GET" to "/cloud/users/brand-new-user"
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+
+ Scenario: Getting all users
+ Given As an "admin"
+ And user "brand-new-user" exists
+ And user "admin" exists
+ When sending "GET" to "/cloud/users"
+ Then users returned are
+ | brand-new-user |
+ | admin |
Scenario: Get editable fields
Given As an "admin"
@@ -75,8 +75,8 @@ Feature: provisioning
| role |
| headline |
| biography |
- | pronouns |
| profile_enabled |
+ | pronouns |
Given As an "brand-new-user"
Then user "brand-new-user" has editable fields
| displayname |
@@ -91,8 +91,8 @@ Feature: provisioning
| role |
| headline |
| biography |
- | pronouns |
| profile_enabled |
+ | pronouns |
Then user "self" has editable fields
| displayname |
| email |
@@ -106,27 +106,27 @@ Feature: provisioning
| role |
| headline |
| biography |
- | pronouns |
| profile_enabled |
+ | pronouns |
- Scenario: Edit a user
- Given As an "admin"
- And user "brand-new-user" exists
- When sending "PUT" to "/cloud/users/brand-new-user" with
- | key | displayname |
- | value | Brand New User |
- And the OCS status code should be "100"
- And the HTTP status code should be "200"
- And sending "PUT" to "/cloud/users/brand-new-user" with
- | key | quota |
- | value | 12MB |
- And the OCS status code should be "100"
- And the HTTP status code should be "200"
- And sending "PUT" to "/cloud/users/brand-new-user" with
- | key | email |
- | value | no-reply@nextcloud.com |
- And the OCS status code should be "100"
- And the HTTP status code should be "200"
+ Scenario: Edit a user
+ Given As an "admin"
+ And user "brand-new-user" exists
+ When sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | displayname |
+ | value | Brand New User |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | quota |
+ | value | 12MB |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | email |
+ | value | no-reply@nextcloud.com |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
And sending "PUT" to "/cloud/users/brand-new-user" with
| key | additional_mail |
| value | no.reply@nextcloud.com |
@@ -137,105 +137,105 @@ Feature: provisioning
| value | noreply@nextcloud.com |
And the OCS status code should be "100"
And the HTTP status code should be "200"
- And sending "PUT" to "/cloud/users/brand-new-user" with
- | key | phone |
- | value | +49 711 / 25 24 28-90 |
- And the OCS status code should be "100"
- And the HTTP status code should be "200"
- And sending "PUT" to "/cloud/users/brand-new-user" with
- | key | address |
- | value | Foo Bar Town |
- And the OCS status code should be "100"
- And the HTTP status code should be "200"
- And sending "PUT" to "/cloud/users/brand-new-user" with
- | key | website |
- | value | https://nextcloud.com |
- And the OCS status code should be "100"
- And the HTTP status code should be "200"
- And sending "PUT" to "/cloud/users/brand-new-user" with
- | key | twitter |
- | value | Nextcloud |
- And the OCS status code should be "100"
- And the HTTP status code should be "200"
- Then user "brand-new-user" has
- | id | brand-new-user |
- | displayname | Brand New User |
- | email | no-reply@nextcloud.com |
+ And sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | phone |
+ | value | +49 711 / 25 24 28-90 |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | address |
+ | value | Foo Bar Town |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | website |
+ | value | https://nextcloud.com |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | twitter |
+ | value | Nextcloud |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ Then user "brand-new-user" has
+ | id | brand-new-user |
+ | displayname | Brand New User |
+ | email | no-reply@nextcloud.com |
| additional_mail | no.reply@nextcloud.com;noreply@nextcloud.com |
- | phone | +4971125242890 |
- | address | Foo Bar Town |
- | website | https://nextcloud.com |
- | twitter | Nextcloud |
+ | phone | +4971125242890 |
+ | address | Foo Bar Town |
+ | website | https://nextcloud.com |
+ | twitter | Nextcloud |
- Scenario: Edit a user account properties scopes
- Given user "brand-new-user" exists
+ Scenario: Edit a user account properties scopes
+ Given user "brand-new-user" exists
And As an "brand-new-user"
- When sending "PUT" to "/cloud/users/brand-new-user" with
- | key | phoneScope |
- | value | v2-private |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- When sending "PUT" to "/cloud/users/brand-new-user" with
- | key | twitterScope |
- | value | v2-local |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- When sending "PUT" to "/cloud/users/brand-new-user" with
- | key | addressScope |
- | value | v2-federated |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- When sending "PUT" to "/cloud/users/brand-new-user" with
- | key | emailScope |
- | value | v2-published |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- When sending "PUT" to "/cloud/users/brand-new-user" with
- | key | websiteScope |
- | value | public |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- When sending "PUT" to "/cloud/users/brand-new-user" with
- | key | displaynameScope |
- | value | contacts |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- When sending "PUT" to "/cloud/users/brand-new-user" with
- | key | avatarScope |
- | value | private |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- And sending "PUT" to "/cloud/users/brand-new-user" with
- | key | email |
- | value | no-reply@nextcloud.com |
- And the OCS status code should be "100"
- And the HTTP status code should be "200"
- # Duplicating primary address
- And sending "PUT" to "/cloud/users/brand-new-user" with
- | key | additional_mail |
- | value | no-reply@nextcloud.com |
- And the OCS status code should be "102"
- And the HTTP status code should be "200"
- And sending "PUT" to "/cloud/users/brand-new-user" with
- | key | additional_mail |
- | value | no.reply2@nextcloud.com |
- And the OCS status code should be "100"
- And the HTTP status code should be "200"
- # Duplicating another additional address
- And sending "PUT" to "/cloud/users/brand-new-user" with
- | key | additional_mail |
- | value | no.reply2@nextcloud.com |
- And the OCS status code should be "102"
- And the HTTP status code should be "200"
- Then user "brand-new-user" has
- | id | brand-new-user |
- | phoneScope | v2-private |
- | twitterScope | v2-local |
- | addressScope | v2-federated |
- | emailScope | v2-published |
- | websiteScope | v2-published |
- | displaynameScope | v2-federated |
- | avatarScope | v2-local |
+ When sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | phoneScope |
+ | value | v2-private |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ When sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | twitterScope |
+ | value | v2-local |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ When sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | addressScope |
+ | value | v2-federated |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ When sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | emailScope |
+ | value | v2-published |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ When sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | websiteScope |
+ | value | public |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ When sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | displaynameScope |
+ | value | contacts |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ When sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | avatarScope |
+ | value | private |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | email |
+ | value | no-reply@nextcloud.com |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ # Duplicating primary address
+ And sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | additional_mail |
+ | value | no-reply@nextcloud.com |
+ And the OCS status code should be "102"
+ And the HTTP status code should be "200"
+ And sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | additional_mail |
+ | value | no.reply2@nextcloud.com |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ # Duplicating another additional address
+ And sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | additional_mail |
+ | value | no.reply2@nextcloud.com |
+ And the OCS status code should be "102"
+ And the HTTP status code should be "200"
+ Then user "brand-new-user" has
+ | id | brand-new-user |
+ | phoneScope | v2-private |
+ | twitterScope | v2-local |
+ | addressScope | v2-federated |
+ | emailScope | v2-published |
+ | websiteScope | v2-published |
+ | displaynameScope | v2-federated |
+ | avatarScope | v2-local |
Scenario: Edit a user account multivalue property scopes
Given user "brand-new-user" exists
@@ -264,24 +264,24 @@ Feature: provisioning
| id | brand-new-user |
| additional_mailScope | v2-federated;v2-published |
- Scenario: Edit a user account properties scopes with invalid or unsupported value
- Given user "brand-new-user" exists
+ Scenario: Edit a user account properties scopes with invalid or unsupported value
+ Given user "brand-new-user" exists
And As an "brand-new-user"
- When sending "PUT" to "/cloud/users/brand-new-user" with
- | key | phoneScope |
- | value | invalid |
- Then the OCS status code should be "102"
- And the HTTP status code should be "200"
- When sending "PUT" to "/cloud/users/brand-new-user" with
- | key | displaynameScope |
- | value | v2-private |
- Then the OCS status code should be "102"
- And the HTTP status code should be "200"
- When sending "PUT" to "/cloud/users/brand-new-user" with
- | key | emailScope |
- | value | v2-private |
- Then the OCS status code should be "102"
- And the HTTP status code should be "200"
+ When sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | phoneScope |
+ | value | invalid |
+ Then the OCS status code should be "102"
+ And the HTTP status code should be "200"
+ When sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | displaynameScope |
+ | value | v2-private |
+ Then the OCS status code should be "102"
+ And the HTTP status code should be "200"
+ When sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | emailScope |
+ | value | v2-private |
+ Then the OCS status code should be "102"
+ And the HTTP status code should be "200"
Scenario: Edit a user account multi-value property scopes with invalid or unsupported value
Given user "brand-new-user" exists
@@ -320,540 +320,540 @@ Feature: provisioning
Then user "brand-new-user" has not
| additional_mail | no.reply6@nextcloud.com |
- Scenario: An admin cannot edit user account property scopes
- Given As an "admin"
- And user "brand-new-user" exists
- When sending "PUT" to "/cloud/users/brand-new-user" with
- | key | phoneScope |
- | value | v2-private |
- Then the OCS status code should be "103"
- And the HTTP status code should be "200"
-
- Scenario: Search by phone number
- Given As an "admin"
- And user "phone-user" exists
- And sending "PUT" to "/cloud/users/phone-user" with
- | key | phone |
- | value | +49 711 / 25 24 28-90 |
- And the OCS status code should be "100"
- And the HTTP status code should be "200"
- Then search users by phone for region "DE" with
- | random-string1 | 0711 / 123 456 78 |
- | random-string1 | 0711 / 252 428-90 |
- | random-string2 | 0711 / 90-824 252 |
- And the OCS status code should be "100"
- And the HTTP status code should be "200"
- Then phone matches returned are
- | random-string1 | phone-user@localhost:8080 |
-
- Scenario: Create a group
- Given As an "admin"
- And group "new-group" does not exist
- When sending "POST" to "/cloud/groups" with
- | groupid | new-group |
- | password | 123456 |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- And group "new-group" exists
- And group "new-group" has
- | displayname | new-group |
-
- Scenario: Create a group with custom display name
- Given As an "admin"
- And group "new-group" does not exist
- When sending "POST" to "/cloud/groups" with
- | groupid | new-group |
- | password | 123456 |
- | displayname | new-group-displayname |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- And group "new-group" exists
- And group "new-group" has
- | displayname | new-group-displayname |
-
- Scenario: Create a group with special characters
- Given As an "admin"
- And group "España" does not exist
- When sending "POST" to "/cloud/groups" with
- | groupid | España |
- | password | 123456 |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- And group "España" exists
- And group "España" has
- | displayname | España |
-
- Scenario: adding user to a group without sending the group
- Given As an "admin"
- And user "brand-new-user" exists
- When sending "POST" to "/cloud/users/brand-new-user/groups" with
- | groupid | |
- Then the OCS status code should be "101"
- And the HTTP status code should be "200"
-
- Scenario: adding user to a group which doesn't exist
- Given As an "admin"
- And user "brand-new-user" exists
- And group "not-group" does not exist
- When sending "POST" to "/cloud/users/brand-new-user/groups" with
- | groupid | not-group |
- Then the OCS status code should be "102"
- And the HTTP status code should be "200"
-
- Scenario: adding user to a group without privileges
- Given user "brand-new-user" exists
- And As an "brand-new-user"
- When sending "POST" to "/cloud/users/brand-new-user/groups" with
- | groupid | new-group |
- Then the OCS status code should be "403"
- And the HTTP status code should be "200"
-
- Scenario: adding user to a group
- Given As an "admin"
- And user "brand-new-user" exists
- And group "new-group" exists
- When sending "POST" to "/cloud/users/brand-new-user/groups" with
- | groupid | new-group |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
-
- Scenario: getting groups of an user
- Given As an "admin"
- And user "brand-new-user" exists
- And group "new-group" exists
- When sending "GET" to "/cloud/users/brand-new-user/groups"
- Then groups returned are
- | new-group |
- And the OCS status code should be "100"
-
- Scenario: adding a user which doesn't exist to a group
- Given As an "admin"
- And user "not-user" does not exist
- And group "new-group" exists
- When sending "POST" to "/cloud/users/not-user/groups" with
- | groupid | new-group |
- Then the OCS status code should be "103"
- And the HTTP status code should be "200"
-
- Scenario: getting a group
- Given As an "admin"
- And group "new-group" exists
- When sending "GET" to "/cloud/groups/new-group"
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
-
- Scenario: Getting all groups
- Given As an "admin"
- And group "new-group" exists
- And group "admin" exists
- When sending "GET" to "/cloud/groups"
- Then groups returned are
- | España |
- | admin |
- | new-group |
-
- Scenario: create a subadmin
- Given As an "admin"
- And user "brand-new-user" exists
- And group "new-group" exists
- When sending "POST" to "/cloud/users/brand-new-user/subadmins" with
- | groupid | new-group |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
-
- Scenario: get users using a subadmin
- Given As an "admin"
- And user "brand-new-user" exists
- And group "new-group" exists
- And user "brand-new-user" belongs to group "new-group"
- And user "brand-new-user" is subadmin of group "new-group"
- And As an "brand-new-user"
- When sending "GET" to "/cloud/users"
- Then users returned are
- | brand-new-user |
- And the OCS status code should be "100"
- And the HTTP status code should be "200"
-
- Scenario: removing a user from a group which doesn't exists
- Given As an "admin"
- And user "brand-new-user" exists
- And group "not-group" does not exist
- When sending "DELETE" to "/cloud/users/brand-new-user/groups" with
- | groupid | not-group |
- Then the OCS status code should be "102"
-
- Scenario: removing a user from a group
- Given As an "admin"
- And user "brand-new-user" exists
- And group "new-group" exists
- And user "brand-new-user" belongs to group "new-group"
- When sending "DELETE" to "/cloud/users/brand-new-user/groups" with
- | groupid | new-group |
- Then the OCS status code should be "100"
- And user "brand-new-user" does not belong to group "new-group"
-
- Scenario: create a subadmin using a user which not exist
- Given As an "admin"
- And user "not-user" does not exist
- And group "new-group" exists
- When sending "POST" to "/cloud/users/not-user/subadmins" with
- | groupid | new-group |
- Then the OCS status code should be "101"
- And the HTTP status code should be "200"
-
- Scenario: create a subadmin using a group which not exist
- Given As an "admin"
- And user "brand-new-user" exists
- And group "not-group" does not exist
- When sending "POST" to "/cloud/users/brand-new-user/subadmins" with
- | groupid | not-group |
- Then the OCS status code should be "102"
- And the HTTP status code should be "200"
-
- Scenario: Getting subadmin groups
- Given As an "admin"
- And user "brand-new-user" exists
- And group "new-group" exists
- When sending "GET" to "/cloud/users/brand-new-user/subadmins"
- Then subadmin groups returned are
- | new-group |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
-
- Scenario: Getting subadmin groups of a user which not exist
- Given As an "admin"
- And user "not-user" does not exist
- And group "new-group" exists
- When sending "GET" to "/cloud/users/not-user/subadmins"
- Then the OCS status code should be "404"
- And the HTTP status code should be "200"
-
- Scenario: Getting subadmin users of a group
- Given As an "admin"
- And user "brand-new-user" exists
- And group "new-group" exists
- When sending "GET" to "/cloud/groups/new-group/subadmins"
- Then subadmin users returned are
- | brand-new-user |
- And the OCS status code should be "100"
- And the HTTP status code should be "200"
-
- Scenario: Getting subadmin users of a group which doesn't exist
- Given As an "admin"
- And user "brand-new-user" exists
- And group "not-group" does not exist
- When sending "GET" to "/cloud/groups/not-group/subadmins"
- Then the OCS status code should be "101"
- And the HTTP status code should be "200"
-
- Scenario: Removing subadmin from a group
- Given As an "admin"
- And user "brand-new-user" exists
- And group "new-group" exists
- And user "brand-new-user" is subadmin of group "new-group"
- When sending "DELETE" to "/cloud/users/brand-new-user/subadmins" with
- | groupid | new-group |
- And the OCS status code should be "100"
- And the HTTP status code should be "200"
-
- Scenario: Delete a user
- Given As an "admin"
- And user "brand-new-user" exists
- When sending "DELETE" to "/cloud/users/brand-new-user"
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- And user "brand-new-user" does not exist
-
- Scenario: Delete a group
- Given As an "admin"
- And group "new-group" exists
- When sending "DELETE" to "/cloud/groups/new-group"
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- And group "new-group" does not exist
-
- Scenario: Delete a group with special characters
- Given As an "admin"
- And group "España" exists
- When sending "DELETE" to "/cloud/groups/España"
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- And group "España" does not exist
-
- Scenario: get enabled apps
- Given As an "admin"
- When sending "GET" to "/cloud/apps?filter=enabled"
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- And apps returned are
- | cloud_federation_api |
- | comments |
- | contactsinteraction |
- | dashboard |
- | dav |
- | federatedfilesharing |
- | federation |
- | files |
- | files_reminders |
- | files_sharing |
- | files_trashbin |
- | files_versions |
- | lookup_server_connector |
- | provisioning_api |
- | settings |
- | sharebymail |
- | systemtags |
- | theming |
- | twofactor_backupcodes |
- | updatenotification |
- | user_ldap |
- | user_status |
- | viewer |
- | workflowengine |
- | webhook_listeners |
- | weather_status |
- | files_external |
- | oauth2 |
-
- Scenario: get app info
- Given As an "admin"
- When sending "GET" to "/cloud/apps/files"
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
-
- Scenario: get app info from app that does not exist
- Given As an "admin"
- When sending "GET" to "/cloud/apps/this_app_should_never_exist"
- Then the OCS status code should be "998"
- And the HTTP status code should be "200"
-
- Scenario: enable an app
- Given As an "admin"
- And app "testing" is disabled
- When sending "POST" to "/cloud/apps/testing"
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- And app "testing" is enabled
-
- Scenario: enable an app that does not exist
- Given As an "admin"
- When sending "POST" to "/cloud/apps/this_app_should_never_exist"
- Then the OCS status code should be "998"
- And the HTTP status code should be "200"
-
- Scenario: disable an app
- Given As an "admin"
- And app "testing" is enabled
- When sending "DELETE" to "/cloud/apps/testing"
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- And app "testing" is disabled
-
- Scenario: disable an user
- Given As an "admin"
- And user "user1" exists
- When sending "PUT" to "/cloud/users/user1/disable"
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- And user "user1" is disabled
-
- Scenario: enable an user
- Given As an "admin"
- And user "user1" exists
- And assure user "user1" is disabled
- When sending "PUT" to "/cloud/users/user1/enable"
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- And user "user1" is enabled
-
- Scenario: Subadmin should be able to enable or disable an user in their group
- Given As an "admin"
- And user "subadmin" exists
- And user "user1" exists
- And group "new-group" exists
- And user "subadmin" belongs to group "new-group"
- And user "user1" belongs to group "new-group"
- And Assure user "subadmin" is subadmin of group "new-group"
- And As an "subadmin"
- When sending "PUT" to "/cloud/users/user1/disable"
- Then the OCS status code should be "100"
- Then the HTTP status code should be "200"
- And As an "admin"
- And user "user1" is disabled
-
- Scenario: Subadmin should not be able to enable or disable an user not in their group
- Given As an "admin"
- And user "subadmin" exists
- And user "user1" exists
- And group "new-group" exists
- And group "another-group" exists
- And user "subadmin" belongs to group "new-group"
- And user "user1" belongs to group "another-group"
- And Assure user "subadmin" is subadmin of group "new-group"
- And As an "subadmin"
- When sending "PUT" to "/cloud/users/user1/disable"
- Then the OCS status code should be "998"
- Then the HTTP status code should be "200"
- And As an "admin"
- And user "user1" is enabled
-
- Scenario: Subadmins should not be able to disable users that have admin permissions in their group
- Given As an "admin"
- And user "another-admin" exists
- And user "subadmin" exists
- And group "new-group" exists
- And user "another-admin" belongs to group "admin"
- And user "subadmin" belongs to group "new-group"
- And user "another-admin" belongs to group "new-group"
- And Assure user "subadmin" is subadmin of group "new-group"
- And As an "subadmin"
- When sending "PUT" to "/cloud/users/another-admin/disable"
- Then the OCS status code should be "998"
- Then the HTTP status code should be "200"
- And As an "admin"
- And user "another-admin" is enabled
-
- Scenario: Admin can disable another admin user
- Given As an "admin"
- And user "another-admin" exists
- And user "another-admin" belongs to group "admin"
- When sending "PUT" to "/cloud/users/another-admin/disable"
- Then the OCS status code should be "100"
- Then the HTTP status code should be "200"
- And user "another-admin" is disabled
-
- Scenario: Admin can enable another admin user
- Given As an "admin"
- And user "another-admin" exists
- And user "another-admin" belongs to group "admin"
- And assure user "another-admin" is disabled
- When sending "PUT" to "/cloud/users/another-admin/enable"
- Then the OCS status code should be "100"
- Then the HTTP status code should be "200"
- And user "another-admin" is enabled
-
- Scenario: Admin can disable subadmins in the same group
- Given As an "admin"
- And user "subadmin" exists
- And group "new-group" exists
- And user "subadmin" belongs to group "new-group"
- And user "admin" belongs to group "new-group"
- And Assure user "subadmin" is subadmin of group "new-group"
- When sending "PUT" to "/cloud/users/subadmin/disable"
- Then the OCS status code should be "100"
- Then the HTTP status code should be "200"
- And user "subadmin" is disabled
-
- Scenario: Admin can enable subadmins in the same group
- Given As an "admin"
- And user "subadmin" exists
- And group "new-group" exists
- And user "subadmin" belongs to group "new-group"
- And user "admin" belongs to group "new-group"
- And Assure user "subadmin" is subadmin of group "new-group"
- And assure user "another-admin" is disabled
- When sending "PUT" to "/cloud/users/subadmin/disable"
- Then the OCS status code should be "100"
- Then the HTTP status code should be "200"
- And user "subadmin" is disabled
-
- Scenario: Admin user cannot disable himself
- Given As an "admin"
- And user "another-admin" exists
- And user "another-admin" belongs to group "admin"
- And As an "another-admin"
- When sending "PUT" to "/cloud/users/another-admin/disable"
- Then the OCS status code should be "101"
- And the HTTP status code should be "200"
- And As an "admin"
- And user "another-admin" is enabled
-
- Scenario:Admin user cannot enable himself
- Given As an "admin"
- And user "another-admin" exists
- And user "another-admin" belongs to group "admin"
- And assure user "another-admin" is disabled
- And As an "another-admin"
- When sending "PUT" to "/cloud/users/another-admin/enable"
- And As an "admin"
- Then user "another-admin" is disabled
-
- Scenario: disable an user with a regular user
- Given As an "admin"
- And user "user1" exists
- And user "user2" exists
- And As an "user1"
- When sending "PUT" to "/cloud/users/user2/disable"
- Then the OCS status code should be "403"
- And the HTTP status code should be "200"
- And As an "admin"
- And user "user2" is enabled
-
- Scenario: enable an user with a regular user
- Given As an "admin"
- And user "user1" exists
- And user "user2" exists
- And assure user "user2" is disabled
- And As an "user1"
- When sending "PUT" to "/cloud/users/user2/enable"
- Then the OCS status code should be "403"
- And the HTTP status code should be "200"
- And As an "admin"
- And user "user2" is disabled
-
- Scenario: Subadmin should not be able to disable himself
- Given As an "admin"
- And user "subadmin" exists
- And group "new-group" exists
- And user "subadmin" belongs to group "new-group"
- And Assure user "subadmin" is subadmin of group "new-group"
- And As an "subadmin"
- When sending "PUT" to "/cloud/users/subadmin/disable"
- Then the OCS status code should be "101"
- Then the HTTP status code should be "200"
- And As an "admin"
- And user "subadmin" is enabled
-
- Scenario: Subadmin should not be able to enable himself
- Given As an "admin"
- And user "subadmin" exists
- And group "new-group" exists
- And user "subadmin" belongs to group "new-group"
- And Assure user "subadmin" is subadmin of group "new-group"
- And assure user "subadmin" is disabled
- And As an "subadmin"
- When sending "PUT" to "/cloud/users/subadmin/enabled"
- And As an "admin"
- And user "subadmin" is disabled
-
- Scenario: Making a ocs request with an enabled user
- Given As an "admin"
- And user "user0" exists
- And As an "user0"
- When sending "GET" to "/cloud/capabilities"
- Then the HTTP status code should be "200"
- And the OCS status code should be "100"
-
- Scenario: Making a web request with an enabled user
- Given As an "admin"
- And user "user0" exists
- And As an "user0"
- When sending "GET" with exact url to "/index.php/apps/files"
- Then the HTTP status code should be "200"
-
- Scenario: Making a ocs request with a disabled user
- Given As an "admin"
- And user "user0" exists
- And assure user "user0" is disabled
- And As an "user0"
- When sending "GET" to "/cloud/capabilities"
- Then the OCS status code should be "997"
- And the HTTP status code should be "401"
-
- Scenario: Making a web request with a disabled user
- Given As an "admin"
- And user "user0" exists
- And assure user "user0" is disabled
- And As an "user0"
- When sending "GET" with exact url to "/index.php/apps/files"
- And the HTTP status code should be "401"
+ Scenario: An admin cannot edit user account property scopes
+ Given As an "admin"
+ And user "brand-new-user" exists
+ When sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | phoneScope |
+ | value | v2-private |
+ Then the OCS status code should be "103"
+ And the HTTP status code should be "200"
+
+ Scenario: Search by phone number
+ Given As an "admin"
+ And user "phone-user" exists
+ And sending "PUT" to "/cloud/users/phone-user" with
+ | key | phone |
+ | value | +49 711 / 25 24 28-90 |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ Then search users by phone for region "DE" with
+ | random-string1 | 0711 / 123 456 78 |
+ | random-string1 | 0711 / 252 428-90 |
+ | random-string2 | 0711 / 90-824 252 |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ Then phone matches returned are
+ | random-string1 | phone-user@localhost:8080 |
+
+ Scenario: Create a group
+ Given As an "admin"
+ And group "new-group" does not exist
+ When sending "POST" to "/cloud/groups" with
+ | groupid | new-group |
+ | password | 123456 |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And group "new-group" exists
+ And group "new-group" has
+ | displayname | new-group |
+
+ Scenario: Create a group with custom display name
+ Given As an "admin"
+ And group "new-group" does not exist
+ When sending "POST" to "/cloud/groups" with
+ | groupid | new-group |
+ | password | 123456 |
+ | displayname | new-group-displayname |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And group "new-group" exists
+ And group "new-group" has
+ | displayname | new-group-displayname |
+
+ Scenario: Create a group with special characters
+ Given As an "admin"
+ And group "España" does not exist
+ When sending "POST" to "/cloud/groups" with
+ | groupid | España |
+ | password | 123456 |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And group "España" exists
+ And group "España" has
+ | displayname | España |
+
+ Scenario: adding user to a group without sending the group
+ Given As an "admin"
+ And user "brand-new-user" exists
+ When sending "POST" to "/cloud/users/brand-new-user/groups" with
+ | groupid | |
+ Then the OCS status code should be "101"
+ And the HTTP status code should be "200"
+
+ Scenario: adding user to a group which doesn't exist
+ Given As an "admin"
+ And user "brand-new-user" exists
+ And group "not-group" does not exist
+ When sending "POST" to "/cloud/users/brand-new-user/groups" with
+ | groupid | not-group |
+ Then the OCS status code should be "102"
+ And the HTTP status code should be "200"
+
+ Scenario: adding user to a group without privileges
+ Given user "brand-new-user" exists
+ And As an "brand-new-user"
+ When sending "POST" to "/cloud/users/brand-new-user/groups" with
+ | groupid | new-group |
+ Then the OCS status code should be "403"
+ And the HTTP status code should be "200"
+
+ Scenario: adding user to a group
+ Given As an "admin"
+ And user "brand-new-user" exists
+ And group "new-group" exists
+ When sending "POST" to "/cloud/users/brand-new-user/groups" with
+ | groupid | new-group |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+
+ Scenario: getting groups of an user
+ Given As an "admin"
+ And user "brand-new-user" exists
+ And group "new-group" exists
+ When sending "GET" to "/cloud/users/brand-new-user/groups"
+ Then groups returned are
+ | new-group |
+ And the OCS status code should be "100"
+
+ Scenario: adding a user which doesn't exist to a group
+ Given As an "admin"
+ And user "not-user" does not exist
+ And group "new-group" exists
+ When sending "POST" to "/cloud/users/not-user/groups" with
+ | groupid | new-group |
+ Then the OCS status code should be "103"
+ And the HTTP status code should be "200"
+
+ Scenario: getting a group
+ Given As an "admin"
+ And group "new-group" exists
+ When sending "GET" to "/cloud/groups/new-group"
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+
+ Scenario: Getting all groups
+ Given As an "admin"
+ And group "new-group" exists
+ And group "admin" exists
+ When sending "GET" to "/cloud/groups"
+ Then groups returned are
+ | España |
+ | admin |
+ | new-group |
+
+ Scenario: create a subadmin
+ Given As an "admin"
+ And user "brand-new-user" exists
+ And group "new-group" exists
+ When sending "POST" to "/cloud/users/brand-new-user/subadmins" with
+ | groupid | new-group |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+
+ Scenario: get users using a subadmin
+ Given As an "admin"
+ And user "brand-new-user" exists
+ And group "new-group" exists
+ And user "brand-new-user" belongs to group "new-group"
+ And user "brand-new-user" is subadmin of group "new-group"
+ And As an "brand-new-user"
+ When sending "GET" to "/cloud/users"
+ Then users returned are
+ | brand-new-user |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+
+ Scenario: removing a user from a group which doesn't exists
+ Given As an "admin"
+ And user "brand-new-user" exists
+ And group "not-group" does not exist
+ When sending "DELETE" to "/cloud/users/brand-new-user/groups" with
+ | groupid | not-group |
+ Then the OCS status code should be "102"
+
+ Scenario: removing a user from a group
+ Given As an "admin"
+ And user "brand-new-user" exists
+ And group "new-group" exists
+ And user "brand-new-user" belongs to group "new-group"
+ When sending "DELETE" to "/cloud/users/brand-new-user/groups" with
+ | groupid | new-group |
+ Then the OCS status code should be "100"
+ And user "brand-new-user" does not belong to group "new-group"
+
+ Scenario: create a subadmin using a user which not exist
+ Given As an "admin"
+ And user "not-user" does not exist
+ And group "new-group" exists
+ When sending "POST" to "/cloud/users/not-user/subadmins" with
+ | groupid | new-group |
+ Then the OCS status code should be "101"
+ And the HTTP status code should be "200"
+
+ Scenario: create a subadmin using a group which not exist
+ Given As an "admin"
+ And user "brand-new-user" exists
+ And group "not-group" does not exist
+ When sending "POST" to "/cloud/users/brand-new-user/subadmins" with
+ | groupid | not-group |
+ Then the OCS status code should be "102"
+ And the HTTP status code should be "200"
+
+ Scenario: Getting subadmin groups
+ Given As an "admin"
+ And user "brand-new-user" exists
+ And group "new-group" exists
+ When sending "GET" to "/cloud/users/brand-new-user/subadmins"
+ Then subadmin groups returned are
+ | new-group |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+
+ Scenario: Getting subadmin groups of a user which not exist
+ Given As an "admin"
+ And user "not-user" does not exist
+ And group "new-group" exists
+ When sending "GET" to "/cloud/users/not-user/subadmins"
+ Then the OCS status code should be "404"
+ And the HTTP status code should be "200"
+
+ Scenario: Getting subadmin users of a group
+ Given As an "admin"
+ And user "brand-new-user" exists
+ And group "new-group" exists
+ When sending "GET" to "/cloud/groups/new-group/subadmins"
+ Then subadmin users returned are
+ | brand-new-user |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+
+ Scenario: Getting subadmin users of a group which doesn't exist
+ Given As an "admin"
+ And user "brand-new-user" exists
+ And group "not-group" does not exist
+ When sending "GET" to "/cloud/groups/not-group/subadmins"
+ Then the OCS status code should be "101"
+ And the HTTP status code should be "200"
+
+ Scenario: Removing subadmin from a group
+ Given As an "admin"
+ And user "brand-new-user" exists
+ And group "new-group" exists
+ And user "brand-new-user" is subadmin of group "new-group"
+ When sending "DELETE" to "/cloud/users/brand-new-user/subadmins" with
+ | groupid | new-group |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+
+ Scenario: Delete a user
+ Given As an "admin"
+ And user "brand-new-user" exists
+ When sending "DELETE" to "/cloud/users/brand-new-user"
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And user "brand-new-user" does not exist
+
+ Scenario: Delete a group
+ Given As an "admin"
+ And group "new-group" exists
+ When sending "DELETE" to "/cloud/groups/new-group"
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And group "new-group" does not exist
+
+ Scenario: Delete a group with special characters
+ Given As an "admin"
+ And group "España" exists
+ When sending "DELETE" to "/cloud/groups/España"
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And group "España" does not exist
+
+ Scenario: get enabled apps
+ Given As an "admin"
+ When sending "GET" to "/cloud/apps?filter=enabled"
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And apps returned are
+ | cloud_federation_api |
+ | comments |
+ | contactsinteraction |
+ | dashboard |
+ | dav |
+ | federatedfilesharing |
+ | federation |
+ | files |
+ | files_reminders |
+ | files_sharing |
+ | files_trashbin |
+ | files_versions |
+ | lookup_server_connector |
+ | provisioning_api |
+ | settings |
+ | sharebymail |
+ | systemtags |
+ | theming |
+ | twofactor_backupcodes |
+ | updatenotification |
+ | user_ldap |
+ | user_status |
+ | viewer |
+ | workflowengine |
+ | webhook_listeners |
+ | weather_status |
+ | files_external |
+ | oauth2 |
+
+ Scenario: get app info
+ Given As an "admin"
+ When sending "GET" to "/cloud/apps/files"
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+
+ Scenario: get app info from app that does not exist
+ Given As an "admin"
+ When sending "GET" to "/cloud/apps/this_app_should_never_exist"
+ Then the OCS status code should be "998"
+ And the HTTP status code should be "200"
+
+ Scenario: enable an app
+ Given As an "admin"
+ And app "testing" is disabled
+ When sending "POST" to "/cloud/apps/testing"
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And app "testing" is enabled
+
+ Scenario: enable an app that does not exist
+ Given As an "admin"
+ When sending "POST" to "/cloud/apps/this_app_should_never_exist"
+ Then the OCS status code should be "998"
+ And the HTTP status code should be "200"
+
+ Scenario: disable an app
+ Given As an "admin"
+ And app "testing" is enabled
+ When sending "DELETE" to "/cloud/apps/testing"
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And app "testing" is disabled
+
+ Scenario: disable an user
+ Given As an "admin"
+ And user "user1" exists
+ When sending "PUT" to "/cloud/users/user1/disable"
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And user "user1" is disabled
+
+ Scenario: enable an user
+ Given As an "admin"
+ And user "user1" exists
+ And assure user "user1" is disabled
+ When sending "PUT" to "/cloud/users/user1/enable"
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And user "user1" is enabled
+
+ Scenario: Subadmin should be able to enable or disable an user in their group
+ Given As an "admin"
+ And user "subadmin" exists
+ And user "user1" exists
+ And group "new-group" exists
+ And user "subadmin" belongs to group "new-group"
+ And user "user1" belongs to group "new-group"
+ And Assure user "subadmin" is subadmin of group "new-group"
+ And As an "subadmin"
+ When sending "PUT" to "/cloud/users/user1/disable"
+ Then the OCS status code should be "100"
+ Then the HTTP status code should be "200"
+ And As an "admin"
+ And user "user1" is disabled
+
+ Scenario: Subadmin should not be able to enable or disable an user not in their group
+ Given As an "admin"
+ And user "subadmin" exists
+ And user "user1" exists
+ And group "new-group" exists
+ And group "another-group" exists
+ And user "subadmin" belongs to group "new-group"
+ And user "user1" belongs to group "another-group"
+ And Assure user "subadmin" is subadmin of group "new-group"
+ And As an "subadmin"
+ When sending "PUT" to "/cloud/users/user1/disable"
+ Then the OCS status code should be "998"
+ Then the HTTP status code should be "200"
+ And As an "admin"
+ And user "user1" is enabled
+
+ Scenario: Subadmins should not be able to disable users that have admin permissions in their group
+ Given As an "admin"
+ And user "another-admin" exists
+ And user "subadmin" exists
+ And group "new-group" exists
+ And user "another-admin" belongs to group "admin"
+ And user "subadmin" belongs to group "new-group"
+ And user "another-admin" belongs to group "new-group"
+ And Assure user "subadmin" is subadmin of group "new-group"
+ And As an "subadmin"
+ When sending "PUT" to "/cloud/users/another-admin/disable"
+ Then the OCS status code should be "998"
+ Then the HTTP status code should be "200"
+ And As an "admin"
+ And user "another-admin" is enabled
+
+ Scenario: Admin can disable another admin user
+ Given As an "admin"
+ And user "another-admin" exists
+ And user "another-admin" belongs to group "admin"
+ When sending "PUT" to "/cloud/users/another-admin/disable"
+ Then the OCS status code should be "100"
+ Then the HTTP status code should be "200"
+ And user "another-admin" is disabled
+
+ Scenario: Admin can enable another admin user
+ Given As an "admin"
+ And user "another-admin" exists
+ And user "another-admin" belongs to group "admin"
+ And assure user "another-admin" is disabled
+ When sending "PUT" to "/cloud/users/another-admin/enable"
+ Then the OCS status code should be "100"
+ Then the HTTP status code should be "200"
+ And user "another-admin" is enabled
+
+ Scenario: Admin can disable subadmins in the same group
+ Given As an "admin"
+ And user "subadmin" exists
+ And group "new-group" exists
+ And user "subadmin" belongs to group "new-group"
+ And user "admin" belongs to group "new-group"
+ And Assure user "subadmin" is subadmin of group "new-group"
+ When sending "PUT" to "/cloud/users/subadmin/disable"
+ Then the OCS status code should be "100"
+ Then the HTTP status code should be "200"
+ And user "subadmin" is disabled
+
+ Scenario: Admin can enable subadmins in the same group
+ Given As an "admin"
+ And user "subadmin" exists
+ And group "new-group" exists
+ And user "subadmin" belongs to group "new-group"
+ And user "admin" belongs to group "new-group"
+ And Assure user "subadmin" is subadmin of group "new-group"
+ And assure user "another-admin" is disabled
+ When sending "PUT" to "/cloud/users/subadmin/disable"
+ Then the OCS status code should be "100"
+ Then the HTTP status code should be "200"
+ And user "subadmin" is disabled
+
+ Scenario: Admin user cannot disable himself
+ Given As an "admin"
+ And user "another-admin" exists
+ And user "another-admin" belongs to group "admin"
+ And As an "another-admin"
+ When sending "PUT" to "/cloud/users/another-admin/disable"
+ Then the OCS status code should be "101"
+ And the HTTP status code should be "200"
+ And As an "admin"
+ And user "another-admin" is enabled
+
+ Scenario:Admin user cannot enable himself
+ Given As an "admin"
+ And user "another-admin" exists
+ And user "another-admin" belongs to group "admin"
+ And assure user "another-admin" is disabled
+ And As an "another-admin"
+ When sending "PUT" to "/cloud/users/another-admin/enable"
+ And As an "admin"
+ Then user "another-admin" is disabled
+
+ Scenario: disable an user with a regular user
+ Given As an "admin"
+ And user "user1" exists
+ And user "user2" exists
+ And As an "user1"
+ When sending "PUT" to "/cloud/users/user2/disable"
+ Then the OCS status code should be "403"
+ And the HTTP status code should be "200"
+ And As an "admin"
+ And user "user2" is enabled
+
+ Scenario: enable an user with a regular user
+ Given As an "admin"
+ And user "user1" exists
+ And user "user2" exists
+ And assure user "user2" is disabled
+ And As an "user1"
+ When sending "PUT" to "/cloud/users/user2/enable"
+ Then the OCS status code should be "403"
+ And the HTTP status code should be "200"
+ And As an "admin"
+ And user "user2" is disabled
+
+ Scenario: Subadmin should not be able to disable himself
+ Given As an "admin"
+ And user "subadmin" exists
+ And group "new-group" exists
+ And user "subadmin" belongs to group "new-group"
+ And Assure user "subadmin" is subadmin of group "new-group"
+ And As an "subadmin"
+ When sending "PUT" to "/cloud/users/subadmin/disable"
+ Then the OCS status code should be "101"
+ Then the HTTP status code should be "200"
+ And As an "admin"
+ And user "subadmin" is enabled
+
+ Scenario: Subadmin should not be able to enable himself
+ Given As an "admin"
+ And user "subadmin" exists
+ And group "new-group" exists
+ And user "subadmin" belongs to group "new-group"
+ And Assure user "subadmin" is subadmin of group "new-group"
+ And assure user "subadmin" is disabled
+ And As an "subadmin"
+ When sending "PUT" to "/cloud/users/subadmin/enabled"
+ And As an "admin"
+ And user "subadmin" is disabled
+
+ Scenario: Making a ocs request with an enabled user
+ Given As an "admin"
+ And user "user0" exists
+ And As an "user0"
+ When sending "GET" to "/cloud/capabilities"
+ Then the HTTP status code should be "200"
+ And the OCS status code should be "100"
+
+ Scenario: Making a web request with an enabled user
+ Given As an "admin"
+ And user "user0" exists
+ And As an "user0"
+ When sending "GET" with exact url to "/index.php/apps/files"
+ Then the HTTP status code should be "200"
+
+ Scenario: Making a ocs request with a disabled user
+ Given As an "admin"
+ And user "user0" exists
+ And assure user "user0" is disabled
+ And As an "user0"
+ When sending "GET" to "/cloud/capabilities"
+ Then the OCS status code should be "997"
+ And the HTTP status code should be "401"
+
+ Scenario: Making a web request with a disabled user
+ Given As an "admin"
+ And user "user0" exists
+ And assure user "user0" is disabled
+ And As an "user0"
+ When sending "GET" with exact url to "/index.php/apps/files"
+ And the HTTP status code should be "401"
diff --git a/core/src/views/Profile.vue b/core/src/views/Profile.vue
index 1df8fce6606..661e9a7fa0b 100644
--- a/core/src/views/Profile.vue
+++ b/core/src/views/Profile.vue
@@ -11,7 +11,8 @@
<div class="profile__header__container__placeholder" />
<div class="profile__header__container__displayname">
<h2>{{ displayname || userId }}</h2>
- <span v-if="pronouns" class="profile__header__container__pronouns">· {{ pronouns }}</span>
+ <span v-if="pronouns">·</span>
+ <span v-if="pronouns" class="profile__header__container__pronouns">{{ pronouns }}</span>
<NcButton v-if="isCurrentUser"
type="primary"
:href="settingsUrl">
@@ -270,6 +271,7 @@ $content-max-width: 640px;
overflow-y: auto;
&__header {
+ display: flex;
position: sticky;
height: 190px;
top: -40px;
@@ -281,7 +283,8 @@ $content-max-width: 640px;
align-self: flex-end;
width: 100%;
max-width: $profile-max-width;
- margin: 0 auto;
+ margin: 8px auto;
+ row-gap: 8px;
display: grid;
grid-template-rows: max-content max-content;
grid-template-columns: 240px 1fr;
@@ -295,13 +298,18 @@ $content-max-width: 640px;
padding-inline: 16px; // same as the status text button, see NcButton
width: $content-max-width;
height: 45px;
- margin-block: 100px 0;
+ margin-block: 125px 0;
display: flex;
align-items: center;
gap: 18px;
h2 {
font-size: 30px;
+ margin: 0;
+ }
+
+ span {
+ font-size: 20px;
}
}
}
@@ -405,13 +413,13 @@ $content-max-width: 640px;
&__container {
grid-template-columns: unset;
+ margin-bottom: 110px;
&__displayname {
- margin: 80px 20px 0px!important;
- height: 1em;
+ margin: 80px 20px 0px 0px!important;
width: unset;
- display: unset;
text-align: center;
+ padding-inline: 12px;
}
&__edit-button {
@@ -428,6 +436,11 @@ $content-max-width: 640px;
&__content {
display: block;
+
+ .avatar {
+ // Overlap avatar to top header
+ margin-top: -110px !important;
+ }
}
&__blocks {
diff --git a/dist/core-profile.js b/dist/core-profile.js
index bb0e92b24c3..a3b769f630f 100644
--- a/dist/core-profile.js
+++ b/dist/core-profile.js
@@ -1,2 +1,2 @@
-(()=>{"use strict";var t,e,n,i={69095:(t,e,n)=>{var i=n(21777),a=n(85471),r=n(85168),o=n(61338),s=n(32981),A=n(53334),l=n(63814),c=n(24764),p=n(73267),d=n(18195),u=n(41944),C=n(18740),_=n(22378),h=n(34196);const f={name:"AccountIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var m=n(14486);const g=(0,m.A)(f,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon account-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,v={name:"MapMarkerIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},x=(0,m.A)(v,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon map-marker-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var b=n(93919),y=n(96763);const k=(0,a.pM)({name:"Profile",components:{AccountIcon:g,MapMarkerIcon:x,NcActionLink:p.A,NcActions:c.A,NcAppContent:d.A,NcAvatar:u.A,NcButton:C.A,NcContent:_.A,NcEmptyContent:h.A,PencilIcon:b.A},data:()=>({...(0,s.C)("core","profileParameters",{userId:null,displayname:null,address:null,organisation:null,role:null,headline:null,biography:null,actions:[],isUserAvatarVisible:!1,pronouns:null}),status:(0,s.C)("core","status",{}),sections:window.OCA.Core.ProfileSections.getSections()}),computed:{isCurrentUser(){return(0,i.HW)()?.uid===this.userId},allActions(){return this.actions},primaryAction(){return this.allActions.length?this.allActions[0]:null},otherActions(){return y.warn(this.allActions),this.allActions.length>1?this.allActions.slice(1):[]},settingsUrl:()=>(0,l.Jv)("/settings/user"),emptyProfileMessage(){return this.isCurrentUser?(0,A.Tl)("core","You have not added any info yet"):(0,A.Tl)("core","{user} has not added any info yet",{user:this.displayname||this.userId})}},mounted(){document.title=`${this.displayname||this.userId} - ${document.title}`,(0,o.B1)("user_status:status.updated",this.handleStatusUpdate)},beforeDestroy(){(0,o.al)("user_status:status.updated",this.handleStatusUpdate)},methods:{t:A.Tl,handleStatusUpdate(t){this.isCurrentUser&&t.userId===this.userId&&(this.status=t)},openStatusModal(){const t=document.querySelector(".user-status-menu-item");this.isCurrentUser&&(t?t.click():(0,r.Qg)((0,A.Tl)("core","Error opening the user status modal, try hard refreshing the page")))}}});var w=n(85072),B=n.n(w),S=n(97825),E=n.n(S),I=n(77659),D=n.n(I),N=n(55056),O=n.n(N),P=n(10540),U=n.n(P),j=n(41113),M=n.n(j),z=n(64614),T={};T.styleTagTransform=M(),T.setAttributes=O(),T.insert=D().bind(null,"head"),T.domAPI=E(),T.insertStyleElement=U(),B()(z.A,T),z.A&&z.A.locals&&z.A.locals;const $=(0,m.A)(k,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcContent",{attrs:{"app-name":"profile"}},[e("NcAppContent",[e("div",{staticClass:"profile__header"},[e("div",{staticClass:"profile__header__container"},[e("div",{staticClass:"profile__header__container__placeholder"}),t._v(" "),e("div",{staticClass:"profile__header__container__displayname"},[e("h2",[t._v(t._s(t.displayname||t.userId))]),t._v(" "),t.pronouns?e("span",{staticClass:"profile__header__container__pronouns"},[t._v("· "+t._s(t.pronouns))]):t._e(),t._v(" "),t.isCurrentUser?e("NcButton",{attrs:{type:"primary",href:t.settingsUrl},scopedSlots:t._u([{key:"icon",fn:function(){return[e("PencilIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,4260349822)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Edit Profile"))+"\n\t\t\t\t\t")]):t._e()],1),t._v(" "),t.status.icon||t.status.message?e("NcButton",{attrs:{disabled:!t.isCurrentUser,type:t.isCurrentUser?"tertiary":"tertiary-no-background"},on:{click:t.openStatusModal}},[t._v("\n\t\t\t\t\t"+t._s(t.status.icon)+" "+t._s(t.status.message)+"\n\t\t\t\t")]):t._e()],1)]),t._v(" "),e("div",{staticClass:"profile__wrapper"},[e("div",{staticClass:"profile__content"},[e("div",{staticClass:"profile__sidebar"},[e("NcAvatar",{staticClass:"avatar",class:{interactive:t.isCurrentUser},attrs:{user:t.userId,size:180,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0,"is-no-user":!t.isUserAvatarVisible},nativeOn:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.openStatusModal.apply(null,arguments)}}}),t._v(" "),e("div",{staticClass:"user-actions"},[t.primaryAction?e("NcButton",{staticClass:"user-actions__primary",attrs:{type:"primary",href:t.primaryAction.target,icon:t.primaryAction.icon,target:"phone"===t.primaryAction.id?"_self":"_blank"},scopedSlots:t._u([{key:"icon",fn:function(){return[e("img",{staticClass:"user-actions__primary__icon",attrs:{src:t.primaryAction.icon,alt:""}})]},proxy:!0}],null,!1,1780240256)},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.primaryAction.title)+"\n\t\t\t\t\t\t")]):t._e(),t._v(" "),e("NcActions",{staticClass:"user-actions__other",attrs:{inline:4}},t._l(t.otherActions,(function(n){return e("NcActionLink",{key:n.id,attrs:{"close-after-click":!0,href:n.target,target:"phone"===n.id?"_self":"_blank"},scopedSlots:t._u([{key:"icon",fn:function(){return[e("img",{staticClass:"user-actions__other__icon",attrs:{src:n.icon,alt:""}})]},proxy:!0}],null,!0)},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t\t\t")])})),1)],1)],1),t._v(" "),e("div",{staticClass:"profile__blocks"},[t.organisation||t.role||t.address?e("div",{staticClass:"profile__blocks-details"},[t.organisation||t.role?e("div",{staticClass:"detail"},[e("p",[t._v(t._s(t.organisation)+" "),t.organisation&&t.role?e("span",[t._v("•")]):t._e(),t._v(" "+t._s(t.role))])]):t._e(),t._v(" "),t.address?e("div",{staticClass:"detail"},[e("p",[e("MapMarkerIcon",{staticClass:"map-icon",attrs:{size:16}}),t._v("\n\t\t\t\t\t\t\t\t"+t._s(t.address)+"\n\t\t\t\t\t\t\t")],1)]):t._e()]):t._e(),t._v(" "),t.headline||t.biography||t.sections.length>0?[t.headline?e("h3",{staticClass:"profile__blocks-headline"},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.headline)+"\n\t\t\t\t\t\t")]):t._e(),t._v(" "),t.biography?e("p",{staticClass:"profile__blocks-biography"},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.biography)+"\n\t\t\t\t\t\t")]):t._e(),t._v(" "),t._l(t.sections,(function(n,i){return e("div",{key:i,ref:"section-"+i,refInFor:!0,staticClass:"profile__additionalContent"},[e(n(t.$refs["section-"+i],t.userId),{tag:"component",attrs:{"user-id":t.userId}})],1)}))]:e("NcEmptyContent",{staticClass:"profile__blocks-empty-info",attrs:{name:t.emptyProfileMessage,description:t.t("core","The headline and about sections will show up here")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountIcon",{attrs:{size:60}})]},proxy:!0}])})],2)])])])],1)}),[],!1,null,"eec264ec",null).exports;n.nc=(0,i.aV)(),window.OCA||(window.OCA={}),window.OCA.Core||(window.OCA.Core={}),Object.assign(window.OCA.Core,{ProfileSections:new class{constructor(){var t,e,n;t=this,n=void 0,(e=function(t){var e=function(t){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:e+""}(e="_sections"))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,this._sections=[]}registerSection(t){this._sections.push(t)}getSections(){return this._sections}}});const G=a.Ay.extend($);window.addEventListener("DOMContentLoaded",(()=>{(new G).$mount("#content")}))},64614:(t,e,n)=>{n.d(e,{A:()=>s});var i=n(71354),a=n.n(i),r=n(76314),o=n.n(r)()(a());o.push([t.id,"[data-v-eec264ec] #app-content-vue{background-color:unset}.profile[data-v-eec264ec]{width:100%;overflow-y:auto}.profile__header[data-v-eec264ec]{position:sticky;height:190px;top:-40px;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur)}.profile__header__container[data-v-eec264ec]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-eec264ec]{grid-row:1/3}.profile__header__container__displayname[data-v-eec264ec]{padding-inline:16px;width:640px;height:45px;margin-block:100px 0;display:flex;align-items:center;gap:18px}.profile__header__container__displayname h2[data-v-eec264ec]{font-size:30px}.profile__sidebar[data-v-eec264ec]{position:sticky;top:0;align-self:flex-start;padding-top:20px;min-width:220px;margin-block:-150px 0;margin-inline:0 20px}.profile__sidebar[data-v-eec264ec] .avatar.avatardiv{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-eec264ec] .avatar.avatardiv.interactive .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-eec264ec] .avatar.avatardiv .avatardiv__user-status{inset-inline-end:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__wrapper[data-v-eec264ec]{background-color:var(--color-main-background);min-height:100%}.profile__content[data-v-eec264ec]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-eec264ec]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-eec264ec],.profile__blocks h3[data-v-eec264ec]{cursor:text;overflow-wrap:anywhere}.profile__blocks-details[data-v-eec264ec]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-eec264ec]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-eec264ec]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-eec264ec]{margin-inline:0;margin-block:10px 0;font-weight:bold;font-size:20px}.profile__blocks-biography[data-v-eec264ec]{white-space:pre-line}@media only screen and (max-width: 1024px){.profile__header[data-v-eec264ec]{height:250px;position:unset}.profile__header__container[data-v-eec264ec]{grid-template-columns:unset}.profile__header__container__displayname[data-v-eec264ec]{margin:80px 20px 0px !important;height:1em;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-eec264ec]{width:fit-content;display:block;margin:60px auto}.profile__header__container__status-text[data-v-eec264ec]{margin:4px auto}.profile__content[data-v-eec264ec]{display:block}.profile__blocks[data-v-eec264ec]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__sidebar[data-v-eec264ec]{margin:unset;position:unset}}.user-actions[data-v-eec264ec]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-eec264ec]{margin:0 auto}.user-actions__primary__icon[data-v-eec264ec]{filter:var(--primary-invert-if-dark)}.user-actions__other[data-v-eec264ec]{display:flex;justify-content:center;gap:0 4px}.user-actions__other__icon[data-v-eec264ec]{height:20px;width:20px;object-fit:contain;filter:var(--background-invert-if-dark);align-self:center;margin:12px}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAIA,mCACC,sBAAA,CAGD,0BACC,UAAA,CACA,eAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CACA,kDAAA,CACA,6CAAA,CACA,qDAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAtBiB,CAuBjB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,0DACC,mBAAA,CACA,WAlCgB,CAmChB,WAAA,CACA,oBAAA,CACA,YAAA,CACA,kBAAA,CACA,QAAA,CAEA,6DACC,cAAA,CAMJ,mCACC,eAAA,CACA,KAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,qBAAA,CACA,oBAAA,CAGA,qDACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGC,yFAEC,cAAA,CAIF,6EACC,qBAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKH,mCACC,6CAAA,CACA,eAAA,CAGD,mCACC,gBA7FkB,CA8FlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WAtGkB,CAwGlB,yEACC,WAAA,CACA,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CACA,mBAAA,CACA,gBAAA,CACA,cAAA,CAGD,4CACC,oBAAA,CAKH,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,+BAAA,CACA,UAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAGD,0DACC,eAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAGD,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAEA,8CACC,oCAAA,CAIF,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAEA,4CACC,WAAA,CACA,UAAA,CACA,kBAAA,CACA,uCAAA,CACA,iBAAA,CACA,WAAA",sourcesContent:["\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n:deep(#app-content-vue) {\n\tbackground-color: unset;\n}\n\n.profile {\n\twidth: 100%;\n\toverflow-y: auto;\n\n\t&__header {\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\t\tbackground-color: var(--color-main-background-blur);\n\t\tbackdrop-filter: var(--filter-background-blur);\n\t\t-webkit-backdrop-filter: var(--filter-background-blur);\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 0 auto;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\tpadding-inline: 16px; // same as the status text button, see NcButton\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-block: 100px 0;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 18px;\n\n\t\t\t\th2 {\n\t\t\t\t\tfont-size: 30px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: 0;\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin-block: -150px 0;\n\t\tmargin-inline: 0 20px;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t:deep(.avatar.avatardiv) {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\n\t\t\t&.interactive {\n\t\t\t\t.avatardiv__user-status {\n\t\t\t\t\t// Show that the status is interactive\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.avatardiv__user-status {\n\t\t\t\tinset-inline-end: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__wrapper {\n\t\tbackground-color: var(--color-main-background);\n\t\tmin-height: 100%;\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\tcursor: text;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-inline: 0;\n\t\t\tmargin-block: 10px 0;\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 20px;\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 80px 20px 0px!important;\n\t\t\t\t\theight: 1em;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\tdisplay: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 60px auto;\n\t\t\t\t}\n\n\t\t\t\t&__status-text {\n\t\t\t\t\tmargin: 4px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\n\t\t&__icon {\n\t\t\tfilter: var(--primary-invert-if-dark);\n\t\t}\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\n\t\t&__icon {\n\t\t\theight: 20px;\n\t\t\twidth: 20px;\n\t\t\tobject-fit: contain;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\talign-self: center;\n\t\t\tmargin: 12px; // so we get 44px x 44px\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=o}},a={};function r(t){var e=a[t];if(void 0!==e)return e.exports;var n=a[t]={id:t,loaded:!1,exports:{}};return i[t].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.m=i,t=[],r.O=(e,n,i,a)=>{if(!n){var o=1/0;for(c=0;c<t.length;c++){n=t[c][0],i=t[c][1],a=t[c][2];for(var s=!0,A=0;A<n.length;A++)(!1&a||o>=a)&&Object.keys(r.O).every((t=>r.O[t](n[A])))?n.splice(A--,1):(s=!1,a<o&&(o=a));if(s){t.splice(c--,1);var l=i();void 0!==l&&(e=l)}}return e}a=a||0;for(var c=t.length;c>0&&t[c-1][2]>a;c--)t[c]=t[c-1];t[c]=[n,i,a]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.f={},r.e=t=>Promise.all(Object.keys(r.f).reduce(((e,n)=>(r.f[n](t,e),e)),[])),r.u=t=>t+"-"+t+".js?v="+{802:"eddac441912aee9d7aa8",9291:"077955af818a227340aa"}[t],r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),e={},n="nextcloud:",r.l=(t,i,a,o)=>{if(e[t])e[t].push(i);else{var s,A;if(void 0!==a)for(var l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var p=l[c];if(p.getAttribute("src")==t||p.getAttribute("data-webpack")==n+a){s=p;break}}s||(A=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,r.nc&&s.setAttribute("nonce",r.nc),s.setAttribute("data-webpack",n+a),s.src=t),e[t]=[i];var d=(n,i)=>{s.onerror=s.onload=null,clearTimeout(u);var a=e[t];if(delete e[t],s.parentNode&&s.parentNode.removeChild(s),a&&a.forEach((t=>t(i))),n)return n(i)},u=setTimeout(d.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=d.bind(null,s.onerror),s.onload=d.bind(null,s.onload),A&&document.head.appendChild(s)}},r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=1390,(()=>{var t;r.g.importScripts&&(t=r.g.location+"");var e=r.g.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var i=n.length-1;i>-1&&(!t||!/^http(s?):/.test(t));)t=n[i--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=t})(),(()=>{r.b=document.baseURI||self.location.href;var t={1390:0};r.f.j=(e,n)=>{var i=r.o(t,e)?t[e]:void 0;if(0!==i)if(i)n.push(i[2]);else{var a=new Promise(((n,a)=>i=t[e]=[n,a]));n.push(i[2]=a);var o=r.p+r.u(e),s=new Error;r.l(o,(n=>{if(r.o(t,e)&&(0!==(i=t[e])&&(t[e]=void 0),i)){var a=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;s.message="Loading chunk "+e+" failed.\n("+a+": "+o+")",s.name="ChunkLoadError",s.type=a,s.request=o,i[1](s)}}),"chunk-"+e,e)}},r.O.j=e=>0===t[e];var e=(e,n)=>{var i,a,o=n[0],s=n[1],A=n[2],l=0;if(o.some((e=>0!==t[e]))){for(i in s)r.o(s,i)&&(r.m[i]=s[i]);if(A)var c=A(r)}for(e&&e(n);l<o.length;l++)a=o[l],r.o(t,a)&&t[a]&&t[a][0](),t[a]=0;return r.O(c)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),r.nc=void 0;var o=r.O(void 0,[4208],(()=>r(69095)));o=r.O(o)})();
-//# sourceMappingURL=core-profile.js.map?v=c3cb11f38495ec1cae9e \ No newline at end of file
+(()=>{"use strict";var t,e,n,i={96219:(t,e,n)=>{var i=n(21777),a=n(85471),r=n(85168),o=n(61338),s=n(32981),A=n(53334),l=n(63814),c=n(24764),p=n(73267),d=n(18195),C=n(41944),u=n(18740),_=n(22378),f=n(34196);const m={name:"AccountIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var h=n(14486);const g=(0,h.A)(m,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon account-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,v={name:"MapMarkerIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},b=(0,h.A)(v,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon map-marker-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var x=n(93919),y=n(96763);const k=(0,a.pM)({name:"Profile",components:{AccountIcon:g,MapMarkerIcon:b,NcActionLink:p.A,NcActions:c.A,NcAppContent:d.A,NcAvatar:C.A,NcButton:u.A,NcContent:_.A,NcEmptyContent:f.A,PencilIcon:x.A},data:()=>({...(0,s.C)("core","profileParameters",{userId:null,displayname:null,address:null,organisation:null,role:null,headline:null,biography:null,actions:[],isUserAvatarVisible:!1,pronouns:null}),status:(0,s.C)("core","status",{}),sections:window.OCA.Core.ProfileSections.getSections()}),computed:{isCurrentUser(){return(0,i.HW)()?.uid===this.userId},allActions(){return this.actions},primaryAction(){return this.allActions.length?this.allActions[0]:null},otherActions(){return y.warn(this.allActions),this.allActions.length>1?this.allActions.slice(1):[]},settingsUrl:()=>(0,l.Jv)("/settings/user"),emptyProfileMessage(){return this.isCurrentUser?(0,A.Tl)("core","You have not added any info yet"):(0,A.Tl)("core","{user} has not added any info yet",{user:this.displayname||this.userId})}},mounted(){document.title=`${this.displayname||this.userId} - ${document.title}`,(0,o.B1)("user_status:status.updated",this.handleStatusUpdate)},beforeDestroy(){(0,o.al)("user_status:status.updated",this.handleStatusUpdate)},methods:{t:A.Tl,handleStatusUpdate(t){this.isCurrentUser&&t.userId===this.userId&&(this.status=t)},openStatusModal(){const t=document.querySelector(".user-status-menu-item");this.isCurrentUser&&(t?t.click():(0,r.Qg)((0,A.Tl)("core","Error opening the user status modal, try hard refreshing the page")))}}});var w=n(85072),B=n.n(w),S=n(97825),E=n.n(S),I=n(77659),D=n.n(I),O=n(55056),N=n.n(O),P=n(10540),j=n.n(P),U=n(41113),M=n.n(U),z=n(52054),T={};T.styleTagTransform=M(),T.setAttributes=N(),T.insert=D().bind(null,"head"),T.domAPI=E(),T.insertStyleElement=j(),B()(z.A,T),z.A&&z.A.locals&&z.A.locals;const $=(0,h.A)(k,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcContent",{attrs:{"app-name":"profile"}},[e("NcAppContent",[e("div",{staticClass:"profile__header"},[e("div",{staticClass:"profile__header__container"},[e("div",{staticClass:"profile__header__container__placeholder"}),t._v(" "),e("div",{staticClass:"profile__header__container__displayname"},[e("h2",[t._v(t._s(t.displayname||t.userId))]),t._v(" "),t.pronouns?e("span",[t._v("·")]):t._e(),t._v(" "),t.pronouns?e("span",{staticClass:"profile__header__container__pronouns"},[t._v(t._s(t.pronouns))]):t._e(),t._v(" "),t.isCurrentUser?e("NcButton",{attrs:{type:"primary",href:t.settingsUrl},scopedSlots:t._u([{key:"icon",fn:function(){return[e("PencilIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,4260349822)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Edit Profile"))+"\n\t\t\t\t\t")]):t._e()],1),t._v(" "),t.status.icon||t.status.message?e("NcButton",{attrs:{disabled:!t.isCurrentUser,type:t.isCurrentUser?"tertiary":"tertiary-no-background"},on:{click:t.openStatusModal}},[t._v("\n\t\t\t\t\t"+t._s(t.status.icon)+" "+t._s(t.status.message)+"\n\t\t\t\t")]):t._e()],1)]),t._v(" "),e("div",{staticClass:"profile__wrapper"},[e("div",{staticClass:"profile__content"},[e("div",{staticClass:"profile__sidebar"},[e("NcAvatar",{staticClass:"avatar",class:{interactive:t.isCurrentUser},attrs:{user:t.userId,size:180,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0,"is-no-user":!t.isUserAvatarVisible},nativeOn:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.openStatusModal.apply(null,arguments)}}}),t._v(" "),e("div",{staticClass:"user-actions"},[t.primaryAction?e("NcButton",{staticClass:"user-actions__primary",attrs:{type:"primary",href:t.primaryAction.target,icon:t.primaryAction.icon,target:"phone"===t.primaryAction.id?"_self":"_blank"},scopedSlots:t._u([{key:"icon",fn:function(){return[e("img",{staticClass:"user-actions__primary__icon",attrs:{src:t.primaryAction.icon,alt:""}})]},proxy:!0}],null,!1,1780240256)},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.primaryAction.title)+"\n\t\t\t\t\t\t")]):t._e(),t._v(" "),e("NcActions",{staticClass:"user-actions__other",attrs:{inline:4}},t._l(t.otherActions,(function(n){return e("NcActionLink",{key:n.id,attrs:{"close-after-click":!0,href:n.target,target:"phone"===n.id?"_self":"_blank"},scopedSlots:t._u([{key:"icon",fn:function(){return[e("img",{staticClass:"user-actions__other__icon",attrs:{src:n.icon,alt:""}})]},proxy:!0}],null,!0)},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t\t\t")])})),1)],1)],1),t._v(" "),e("div",{staticClass:"profile__blocks"},[t.organisation||t.role||t.address?e("div",{staticClass:"profile__blocks-details"},[t.organisation||t.role?e("div",{staticClass:"detail"},[e("p",[t._v(t._s(t.organisation)+" "),t.organisation&&t.role?e("span",[t._v("•")]):t._e(),t._v(" "+t._s(t.role))])]):t._e(),t._v(" "),t.address?e("div",{staticClass:"detail"},[e("p",[e("MapMarkerIcon",{staticClass:"map-icon",attrs:{size:16}}),t._v("\n\t\t\t\t\t\t\t\t"+t._s(t.address)+"\n\t\t\t\t\t\t\t")],1)]):t._e()]):t._e(),t._v(" "),t.headline||t.biography||t.sections.length>0?[t.headline?e("h3",{staticClass:"profile__blocks-headline"},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.headline)+"\n\t\t\t\t\t\t")]):t._e(),t._v(" "),t.biography?e("p",{staticClass:"profile__blocks-biography"},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.biography)+"\n\t\t\t\t\t\t")]):t._e(),t._v(" "),t._l(t.sections,(function(n,i){return e("div",{key:i,ref:"section-"+i,refInFor:!0,staticClass:"profile__additionalContent"},[e(n(t.$refs["section-"+i],t.userId),{tag:"component",attrs:{"user-id":t.userId}})],1)}))]:e("NcEmptyContent",{staticClass:"profile__blocks-empty-info",attrs:{name:t.emptyProfileMessage,description:t.t("core","The headline and about sections will show up here")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountIcon",{attrs:{size:60}})]},proxy:!0}])})],2)])])])],1)}),[],!1,null,"b76e3ec8",null).exports;n.nc=(0,i.aV)(),window.OCA||(window.OCA={}),window.OCA.Core||(window.OCA.Core={}),Object.assign(window.OCA.Core,{ProfileSections:new class{constructor(){var t,e,n;t=this,n=void 0,(e=function(t){var e=function(t){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:e+""}(e="_sections"))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,this._sections=[]}registerSection(t){this._sections.push(t)}getSections(){return this._sections}}});const G=a.Ay.extend($);window.addEventListener("DOMContentLoaded",(()=>{(new G).$mount("#content")}))},52054:(t,e,n)=>{n.d(e,{A:()=>s});var i=n(71354),a=n.n(i),r=n(76314),o=n.n(r)()(a());o.push([t.id,"[data-v-b76e3ec8] #app-content-vue{background-color:unset}.profile[data-v-b76e3ec8]{width:100%;overflow-y:auto}.profile__header[data-v-b76e3ec8]{display:flex;position:sticky;height:190px;top:-40px;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur)}.profile__header__container[data-v-b76e3ec8]{align-self:flex-end;width:100%;max-width:1024px;margin:8px auto;row-gap:8px;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-b76e3ec8]{grid-row:1/3}.profile__header__container__displayname[data-v-b76e3ec8]{padding-inline:16px;width:640px;height:45px;margin-block:125px 0;display:flex;align-items:center;gap:18px}.profile__header__container__displayname h2[data-v-b76e3ec8]{font-size:30px;margin:0}.profile__header__container__displayname span[data-v-b76e3ec8]{font-size:20px}.profile__sidebar[data-v-b76e3ec8]{position:sticky;top:0;align-self:flex-start;padding-top:20px;min-width:220px;margin-block:-150px 0;margin-inline:0 20px}.profile__sidebar[data-v-b76e3ec8] .avatar.avatardiv{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-b76e3ec8] .avatar.avatardiv.interactive .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-b76e3ec8] .avatar.avatardiv .avatardiv__user-status{inset-inline-end:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__wrapper[data-v-b76e3ec8]{background-color:var(--color-main-background);min-height:100%}.profile__content[data-v-b76e3ec8]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-b76e3ec8]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-b76e3ec8],.profile__blocks h3[data-v-b76e3ec8]{cursor:text;overflow-wrap:anywhere}.profile__blocks-details[data-v-b76e3ec8]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-b76e3ec8]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-b76e3ec8]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-b76e3ec8]{margin-inline:0;margin-block:10px 0;font-weight:bold;font-size:20px}.profile__blocks-biography[data-v-b76e3ec8]{white-space:pre-line}@media only screen and (max-width: 1024px){.profile__header[data-v-b76e3ec8]{height:250px;position:unset}.profile__header__container[data-v-b76e3ec8]{grid-template-columns:unset;margin-bottom:110px}.profile__header__container__displayname[data-v-b76e3ec8]{margin:80px 20px 0px 0px !important;width:unset;text-align:center;padding-inline:12px}.profile__header__container__edit-button[data-v-b76e3ec8]{width:fit-content;display:block;margin:60px auto}.profile__header__container__status-text[data-v-b76e3ec8]{margin:4px auto}.profile__content[data-v-b76e3ec8]{display:block}.profile__content .avatar[data-v-b76e3ec8]{margin-top:-110px !important}.profile__blocks[data-v-b76e3ec8]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__sidebar[data-v-b76e3ec8]{margin:unset;position:unset}}.user-actions[data-v-b76e3ec8]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-b76e3ec8]{margin:0 auto}.user-actions__primary__icon[data-v-b76e3ec8]{filter:var(--primary-invert-if-dark)}.user-actions__other[data-v-b76e3ec8]{display:flex;justify-content:center;gap:0 4px}.user-actions__other__icon[data-v-b76e3ec8]{height:20px;width:20px;object-fit:contain;filter:var(--background-invert-if-dark);align-self:center;margin:12px}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAIA,mCACC,sBAAA,CAGD,0BACC,UAAA,CACA,eAAA,CAEA,kCACC,YAAA,CACA,eAAA,CACA,YAAA,CACA,SAAA,CACA,kDAAA,CACA,6CAAA,CACA,qDAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAvBiB,CAwBjB,eAAA,CACA,WAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,0DACC,mBAAA,CACA,WApCgB,CAqChB,WAAA,CACA,oBAAA,CACA,YAAA,CACA,kBAAA,CACA,QAAA,CAEA,6DACC,cAAA,CACA,QAAA,CAGD,+DACC,cAAA,CAMJ,mCACC,eAAA,CACA,KAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,qBAAA,CACA,oBAAA,CAGA,qDACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGC,yFAEC,cAAA,CAIF,6EACC,qBAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKH,mCACC,6CAAA,CACA,eAAA,CAGD,mCACC,gBApGkB,CAqGlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WA7GkB,CA+GlB,yEACC,WAAA,CACA,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CACA,mBAAA,CACA,gBAAA,CACA,cAAA,CAGD,4CACC,oBAAA,CAKH,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CACA,mBAAA,CAEA,0DACC,mCAAA,CACA,WAAA,CACA,iBAAA,CACA,mBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAGD,0DACC,eAAA,CAKH,mCACC,aAAA,CAEC,2CAEA,4BAAA,CAIF,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAGD,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAEA,8CACC,oCAAA,CAIF,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAEA,4CACC,WAAA,CACA,UAAA,CACA,kBAAA,CACA,uCAAA,CACA,iBAAA,CACA,WAAA",sourcesContent:["\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n:deep(#app-content-vue) {\n\tbackground-color: unset;\n}\n\n.profile {\n\twidth: 100%;\n\toverflow-y: auto;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\t\tbackground-color: var(--color-main-background-blur);\n\t\tbackdrop-filter: var(--filter-background-blur);\n\t\t-webkit-backdrop-filter: var(--filter-background-blur);\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 8px auto;\n\t\t\trow-gap: 8px;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\tpadding-inline: 16px; // same as the status text button, see NcButton\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-block: 125px 0;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 18px;\n\n\t\t\t\th2 {\n\t\t\t\t\tfont-size: 30px;\n\t\t\t\t\tmargin: 0;\n\t\t\t\t}\n\n\t\t\t\tspan {\n\t\t\t\t\tfont-size: 20px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: 0;\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin-block: -150px 0;\n\t\tmargin-inline: 0 20px;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t:deep(.avatar.avatardiv) {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\n\t\t\t&.interactive {\n\t\t\t\t.avatardiv__user-status {\n\t\t\t\t\t// Show that the status is interactive\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.avatardiv__user-status {\n\t\t\t\tinset-inline-end: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__wrapper {\n\t\tbackground-color: var(--color-main-background);\n\t\tmin-height: 100%;\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\tcursor: text;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-inline: 0;\n\t\t\tmargin-block: 10px 0;\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 20px;\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\t\t\t\tmargin-bottom: 110px;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 80px 20px 0px 0px!important;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\tpadding-inline: 12px;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 60px auto;\n\t\t\t\t}\n\n\t\t\t\t&__status-text {\n\t\t\t\t\tmargin: 4px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\n\t\t\t .avatar {\n\t\t\t\t// Overlap avatar to top header\n\t\t\t\tmargin-top: -110px !important;\n\t\t\t }\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\n\t\t&__icon {\n\t\t\tfilter: var(--primary-invert-if-dark);\n\t\t}\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\n\t\t&__icon {\n\t\t\theight: 20px;\n\t\t\twidth: 20px;\n\t\t\tobject-fit: contain;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\talign-self: center;\n\t\t\tmargin: 12px; // so we get 44px x 44px\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=o}},a={};function r(t){var e=a[t];if(void 0!==e)return e.exports;var n=a[t]={id:t,loaded:!1,exports:{}};return i[t].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.m=i,t=[],r.O=(e,n,i,a)=>{if(!n){var o=1/0;for(c=0;c<t.length;c++){n=t[c][0],i=t[c][1],a=t[c][2];for(var s=!0,A=0;A<n.length;A++)(!1&a||o>=a)&&Object.keys(r.O).every((t=>r.O[t](n[A])))?n.splice(A--,1):(s=!1,a<o&&(o=a));if(s){t.splice(c--,1);var l=i();void 0!==l&&(e=l)}}return e}a=a||0;for(var c=t.length;c>0&&t[c-1][2]>a;c--)t[c]=t[c-1];t[c]=[n,i,a]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.f={},r.e=t=>Promise.all(Object.keys(r.f).reduce(((e,n)=>(r.f[n](t,e),e)),[])),r.u=t=>t+"-"+t+".js?v="+{802:"eddac441912aee9d7aa8",9291:"077955af818a227340aa"}[t],r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),e={},n="nextcloud:",r.l=(t,i,a,o)=>{if(e[t])e[t].push(i);else{var s,A;if(void 0!==a)for(var l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var p=l[c];if(p.getAttribute("src")==t||p.getAttribute("data-webpack")==n+a){s=p;break}}s||(A=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,r.nc&&s.setAttribute("nonce",r.nc),s.setAttribute("data-webpack",n+a),s.src=t),e[t]=[i];var d=(n,i)=>{s.onerror=s.onload=null,clearTimeout(C);var a=e[t];if(delete e[t],s.parentNode&&s.parentNode.removeChild(s),a&&a.forEach((t=>t(i))),n)return n(i)},C=setTimeout(d.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=d.bind(null,s.onerror),s.onload=d.bind(null,s.onload),A&&document.head.appendChild(s)}},r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=1390,(()=>{var t;r.g.importScripts&&(t=r.g.location+"");var e=r.g.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var i=n.length-1;i>-1&&(!t||!/^http(s?):/.test(t));)t=n[i--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=t})(),(()=>{r.b=document.baseURI||self.location.href;var t={1390:0};r.f.j=(e,n)=>{var i=r.o(t,e)?t[e]:void 0;if(0!==i)if(i)n.push(i[2]);else{var a=new Promise(((n,a)=>i=t[e]=[n,a]));n.push(i[2]=a);var o=r.p+r.u(e),s=new Error;r.l(o,(n=>{if(r.o(t,e)&&(0!==(i=t[e])&&(t[e]=void 0),i)){var a=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;s.message="Loading chunk "+e+" failed.\n("+a+": "+o+")",s.name="ChunkLoadError",s.type=a,s.request=o,i[1](s)}}),"chunk-"+e,e)}},r.O.j=e=>0===t[e];var e=(e,n)=>{var i,a,o=n[0],s=n[1],A=n[2],l=0;if(o.some((e=>0!==t[e]))){for(i in s)r.o(s,i)&&(r.m[i]=s[i]);if(A)var c=A(r)}for(e&&e(n);l<o.length;l++)a=o[l],r.o(t,a)&&t[a]&&t[a][0](),t[a]=0;return r.O(c)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),r.nc=void 0;var o=r.O(void 0,[4208],(()=>r(96219)));o=r.O(o)})();
+//# sourceMappingURL=core-profile.js.map?v=b2f21a989ca39d5c35c2 \ No newline at end of file
diff --git a/dist/core-profile.js.map b/dist/core-profile.js.map
index b20e1083fbe..60f030308aa 100644
--- a/dist/core-profile.js.map
+++ b/dist/core-profile.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-profile.js?v=c3cb11f38495ec1cae9e","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/vue-material-design-icons/Account.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Account.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Account.vue?d3d9","webpack:///nextcloud/node_modules/vue-material-design-icons/Account.vue?vue&type=template&id=0571d43c","webpack:///nextcloud/node_modules/vue-material-design-icons/MapMarker.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/MapMarker.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/MapMarker.vue?eeb6","webpack:///nextcloud/node_modules/vue-material-design-icons/MapMarker.vue?vue&type=template&id=42c21a41","webpack:///nextcloud/core/src/views/Profile.vue","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=script&lang=ts","webpack://nextcloud/./core/src/views/Profile.vue?44ab","webpack://nextcloud/./core/src/views/Profile.vue?6193","webpack:///nextcloud/core/src/profile.ts","webpack:///nextcloud/core/src/profile/ProfileSections.js","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=0&id=eec264ec&prod&lang=scss&scoped=true","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon account-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Account.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Account.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Account.vue?vue&type=template&id=0571d43c\"\nimport script from \"./Account.vue?vue&type=script&lang=js\"\nexport * from \"./Account.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MapMarker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MapMarker.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon map-marker-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"MapMarkerIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./MapMarker.vue?vue&type=template&id=42c21a41\"\nimport script from \"./MapMarker.vue?vue&type=script&lang=js\"\nexport * from \"./MapMarker.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon map-marker-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcContent',{attrs:{\"app-name\":\"profile\"}},[_c('NcAppContent',[_c('div',{staticClass:\"profile__header\"},[_c('div',{staticClass:\"profile__header__container\"},[_c('div',{staticClass:\"profile__header__container__placeholder\"}),_vm._v(\" \"),_c('div',{staticClass:\"profile__header__container__displayname\"},[_c('h2',[_vm._v(_vm._s(_vm.displayname || _vm.userId))]),_vm._v(\" \"),(_vm.pronouns)?_c('span',{staticClass:\"profile__header__container__pronouns\"},[_vm._v(\"· \"+_vm._s(_vm.pronouns))]):_vm._e(),_vm._v(\" \"),(_vm.isCurrentUser)?_c('NcButton',{attrs:{\"type\":\"primary\",\"href\":_vm.settingsUrl},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('PencilIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,4260349822)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Edit Profile'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),(_vm.status.icon || _vm.status.message)?_c('NcButton',{attrs:{\"disabled\":!_vm.isCurrentUser,\"type\":_vm.isCurrentUser ? 'tertiary' : 'tertiary-no-background'},on:{\"click\":_vm.openStatusModal}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.status.icon)+\" \"+_vm._s(_vm.status.message)+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"profile__wrapper\"},[_c('div',{staticClass:\"profile__content\"},[_c('div',{staticClass:\"profile__sidebar\"},[_c('NcAvatar',{staticClass:\"avatar\",class:{ interactive: _vm.isCurrentUser },attrs:{\"user\":_vm.userId,\"size\":180,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true,\"is-no-user\":!_vm.isUserAvatarVisible},nativeOn:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}}),_vm._v(\" \"),_c('div',{staticClass:\"user-actions\"},[(_vm.primaryAction)?_c('NcButton',{staticClass:\"user-actions__primary\",attrs:{\"type\":\"primary\",\"href\":_vm.primaryAction.target,\"icon\":_vm.primaryAction.icon,\"target\":_vm.primaryAction.id === 'phone' ? '_self' :'_blank'},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"user-actions__primary__icon\",attrs:{\"src\":_vm.primaryAction.icon,\"alt\":\"\"}})]},proxy:true}],null,false,1780240256)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.primaryAction.title)+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActions',{staticClass:\"user-actions__other\",attrs:{\"inline\":4}},_vm._l((_vm.otherActions),function(action){return _c('NcActionLink',{key:action.id,attrs:{\"close-after-click\":true,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"user-actions__other__icon\",attrs:{\"src\":action.icon,\"alt\":\"\"}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])}),1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"profile__blocks\"},[(_vm.organisation || _vm.role || _vm.address)?_c('div',{staticClass:\"profile__blocks-details\"},[(_vm.organisation || _vm.role)?_c('div',{staticClass:\"detail\"},[_c('p',[_vm._v(_vm._s(_vm.organisation)+\" \"),(_vm.organisation && _vm.role)?_c('span',[_vm._v(\"•\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.role))])]):_vm._e(),_vm._v(\" \"),(_vm.address)?_c('div',{staticClass:\"detail\"},[_c('p',[_c('MapMarkerIcon',{staticClass:\"map-icon\",attrs:{\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.address)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")],1)]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.headline || _vm.biography || _vm.sections.length > 0)?[(_vm.headline)?_c('h3',{staticClass:\"profile__blocks-headline\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.headline)+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.biography)?_c('p',{staticClass:\"profile__blocks-biography\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.biography)+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"profile__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.userId),{tag:\"component\",attrs:{\"user-id\":_vm.userId}})],1)})]:_c('NcEmptyContent',{staticClass:\"profile__blocks-empty-info\",attrs:{\"name\":_vm.emptyProfileMessage,\"description\":_vm.t('core', 'The headline and about sections will show up here')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountIcon',{attrs:{\"size\":60}})]},proxy:true}])})],2)])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&id=eec264ec&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&id=eec264ec&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Profile.vue?vue&type=template&id=eec264ec&scoped=true\"\nimport script from \"./Profile.vue?vue&type=script&lang=ts\"\nexport * from \"./Profile.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Profile.vue?vue&type=style&index=0&id=eec264ec&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"eec264ec\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport Vue from 'vue';\nimport Profile from './views/Profile.vue';\nimport ProfileSections from './profile/ProfileSections.js';\n__webpack_nonce__ = getCSPNonce();\nif (!window.OCA) {\n window.OCA = {};\n}\nif (!window.OCA.Core) {\n window.OCA.Core = {};\n}\nObject.assign(window.OCA.Core, { ProfileSections: new ProfileSections() });\nconst View = Vue.extend(Profile);\nwindow.addEventListener('DOMContentLoaded', () => {\n new View().$mount('#content');\n});\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default class ProfileSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the profile page\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `[data-v-eec264ec] #app-content-vue{background-color:unset}.profile[data-v-eec264ec]{width:100%;overflow-y:auto}.profile__header[data-v-eec264ec]{position:sticky;height:190px;top:-40px;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur)}.profile__header__container[data-v-eec264ec]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-eec264ec]{grid-row:1/3}.profile__header__container__displayname[data-v-eec264ec]{padding-inline:16px;width:640px;height:45px;margin-block:100px 0;display:flex;align-items:center;gap:18px}.profile__header__container__displayname h2[data-v-eec264ec]{font-size:30px}.profile__sidebar[data-v-eec264ec]{position:sticky;top:0;align-self:flex-start;padding-top:20px;min-width:220px;margin-block:-150px 0;margin-inline:0 20px}.profile__sidebar[data-v-eec264ec] .avatar.avatardiv{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-eec264ec] .avatar.avatardiv.interactive .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-eec264ec] .avatar.avatardiv .avatardiv__user-status{inset-inline-end:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__wrapper[data-v-eec264ec]{background-color:var(--color-main-background);min-height:100%}.profile__content[data-v-eec264ec]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-eec264ec]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-eec264ec],.profile__blocks h3[data-v-eec264ec]{cursor:text;overflow-wrap:anywhere}.profile__blocks-details[data-v-eec264ec]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-eec264ec]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-eec264ec]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-eec264ec]{margin-inline:0;margin-block:10px 0;font-weight:bold;font-size:20px}.profile__blocks-biography[data-v-eec264ec]{white-space:pre-line}@media only screen and (max-width: 1024px){.profile__header[data-v-eec264ec]{height:250px;position:unset}.profile__header__container[data-v-eec264ec]{grid-template-columns:unset}.profile__header__container__displayname[data-v-eec264ec]{margin:80px 20px 0px !important;height:1em;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-eec264ec]{width:fit-content;display:block;margin:60px auto}.profile__header__container__status-text[data-v-eec264ec]{margin:4px auto}.profile__content[data-v-eec264ec]{display:block}.profile__blocks[data-v-eec264ec]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__sidebar[data-v-eec264ec]{margin:unset;position:unset}}.user-actions[data-v-eec264ec]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-eec264ec]{margin:0 auto}.user-actions__primary__icon[data-v-eec264ec]{filter:var(--primary-invert-if-dark)}.user-actions__other[data-v-eec264ec]{display:flex;justify-content:center;gap:0 4px}.user-actions__other__icon[data-v-eec264ec]{height:20px;width:20px;object-fit:contain;filter:var(--background-invert-if-dark);align-self:center;margin:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAIA,mCACC,sBAAA,CAGD,0BACC,UAAA,CACA,eAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CACA,kDAAA,CACA,6CAAA,CACA,qDAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAtBiB,CAuBjB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,0DACC,mBAAA,CACA,WAlCgB,CAmChB,WAAA,CACA,oBAAA,CACA,YAAA,CACA,kBAAA,CACA,QAAA,CAEA,6DACC,cAAA,CAMJ,mCACC,eAAA,CACA,KAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,qBAAA,CACA,oBAAA,CAGA,qDACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGC,yFAEC,cAAA,CAIF,6EACC,qBAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKH,mCACC,6CAAA,CACA,eAAA,CAGD,mCACC,gBA7FkB,CA8FlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WAtGkB,CAwGlB,yEACC,WAAA,CACA,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CACA,mBAAA,CACA,gBAAA,CACA,cAAA,CAGD,4CACC,oBAAA,CAKH,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,+BAAA,CACA,UAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAGD,0DACC,eAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAGD,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAEA,8CACC,oCAAA,CAIF,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAEA,4CACC,WAAA,CACA,UAAA,CACA,kBAAA,CACA,uCAAA,CACA,iBAAA,CACA,WAAA\",\"sourcesContent\":[\"\\n$profile-max-width: 1024px;\\n$content-max-width: 640px;\\n\\n:deep(#app-content-vue) {\\n\\tbackground-color: unset;\\n}\\n\\n.profile {\\n\\twidth: 100%;\\n\\toverflow-y: auto;\\n\\n\\t&__header {\\n\\t\\tposition: sticky;\\n\\t\\theight: 190px;\\n\\t\\ttop: -40px;\\n\\t\\tbackground-color: var(--color-main-background-blur);\\n\\t\\tbackdrop-filter: var(--filter-background-blur);\\n\\t\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\n\\t\\t&__container {\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: $profile-max-width;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tdisplay: grid;\\n\\t\\t\\tgrid-template-rows: max-content max-content;\\n\\t\\t\\tgrid-template-columns: 240px 1fr;\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t&__placeholder {\\n\\t\\t\\t\\tgrid-row: 1 / 3;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname {\\n\\t\\t\\t\\tpadding-inline: 16px; // same as the status text button, see NcButton\\n\\t\\t\\t\\twidth: $content-max-width;\\n\\t\\t\\t\\theight: 45px;\\n\\t\\t\\t\\tmargin-block: 100px 0;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tgap: 18px;\\n\\n\\t\\t\\t\\th2 {\\n\\t\\t\\t\\t\\tfont-size: 30px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__sidebar {\\n\\t\\tposition: sticky;\\n\\t\\ttop: 0;\\n\\t\\talign-self: flex-start;\\n\\t\\tpadding-top: 20px;\\n\\t\\tmin-width: 220px;\\n\\t\\tmargin-block: -150px 0;\\n\\t\\tmargin-inline: 0 20px;\\n\\n\\t\\t// Specificity hack is needed to override Avatar component styles\\n\\t\\t:deep(.avatar.avatardiv) {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tmargin: auto;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 8px;\\n\\n\\t\\t\\t&.interactive {\\n\\t\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\t\\t// Show that the status is interactive\\n\\t\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tinset-inline-end: 14px;\\n\\t\\t\\t\\tbottom: 14px;\\n\\t\\t\\t\\twidth: 34px;\\n\\t\\t\\t\\theight: 34px;\\n\\t\\t\\t\\tbackground-size: 28px;\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\t// Styles when custom status icon and status text are set\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\tline-height: 34px;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tmin-height: 100%;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tmax-width: $profile-max-width;\\n\\t\\tmargin: 0 auto;\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__blocks {\\n\\t\\tmargin: 18px 0 80px 0;\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 16px 0;\\n\\t\\twidth: $content-max-width;\\n\\n\\t\\tp, h3 {\\n\\t\\t\\tcursor: text;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t&-details {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tgap: 2px 0;\\n\\n\\t\\t\\t.detail {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t\\t\\tp .map-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-headline {\\n\\t\\t\\tmargin-inline: 0;\\n\\t\\t\\tmargin-block: 10px 0;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t}\\n\\n\\t\\t&-biography {\\n\\t\\t\\twhite-space: pre-line;\\n\\t\\t}\\n\\t}\\n}\\n\\n@media only screen and (max-width: 1024px) {\\n\\t.profile {\\n\\t\\t&__header {\\n\\t\\t\\theight: 250px;\\n\\t\\t\\tposition: unset;\\n\\n\\t\\t\\t&__container {\\n\\t\\t\\t\\tgrid-template-columns: unset;\\n\\n\\t\\t\\t\\t&__displayname {\\n\\t\\t\\t\\t\\tmargin: 80px 20px 0px!important;\\n\\t\\t\\t\\t\\theight: 1em;\\n\\t\\t\\t\\t\\twidth: unset;\\n\\t\\t\\t\\t\\tdisplay: unset;\\n\\t\\t\\t\\t\\ttext-align: center;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\t\\twidth: fit-content;\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\tmargin: 60px auto;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__status-text {\\n\\t\\t\\t\\t\\tmargin: 4px auto;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__content {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t&__blocks {\\n\\t\\t\\twidth: unset;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tpadding: 20px 50px 50px 50px;\\n\\t\\t}\\n\\n\\t\\t&__sidebar {\\n\\t\\t\\tmargin: unset;\\n\\t\\t\\tposition: unset;\\n\\t\\t}\\n\\t}\\n}\\n\\n.user-actions {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n\\tmargin-top: 20px;\\n\\n\\t&__primary {\\n\\t\\tmargin: 0 auto;\\n\\n\\t\\t&__icon {\\n\\t\\t\\tfilter: var(--primary-invert-if-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t&__other {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tgap: 0 4px;\\n\\n\\t\\t&__icon {\\n\\t\\t\\theight: 20px;\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\tobject-fit: contain;\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t\\talign-self: center;\\n\\t\\t\\tmargin: 12px; // so we get 44px x 44px\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"802\":\"eddac441912aee9d7aa8\",\"9291\":\"077955af818a227340aa\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1390;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1390: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(69095)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","defineComponent","components","AccountIcon","MapMarkerIcon","NcActionLink","NcActions","NcAppContent","NcAvatar","NcButton","NcContent","NcEmptyContent","PencilIcon","data","loadState","userId","displayname","address","organisation","role","headline","biography","actions","isUserAvatarVisible","pronouns","status","sections","window","OCA","Core","ProfileSections","getSections","computed","isCurrentUser","getCurrentUser","uid","allActions","primaryAction","length","otherActions","console","warn","slice","settingsUrl","generateUrl","emptyProfileMessage","t","user","mounted","document","subscribe","handleStatusUpdate","beforeDestroy","unsubscribe","methods","openStatusModal","statusMenuItem","querySelector","click","showError","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_setupProxy","scopedSlots","_u","key","fn","proxy","icon","message","class","interactive","nativeOn","preventDefault","stopPropagation","apply","arguments","target","id","_l","action","section","index","ref","refInFor","$refs","tag","__webpack_nonce__","getCSPNonce","Object","assign","constructor","_sections","registerSection","push","View","Vue","extend","Profile","addEventListener","$mount","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","url","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","test","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","error","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"core-profile.js?v=b2f21a989ca39d5c35c2","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/vue-material-design-icons/Account.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Account.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Account.vue?d3d9","webpack:///nextcloud/node_modules/vue-material-design-icons/Account.vue?vue&type=template&id=0571d43c","webpack:///nextcloud/node_modules/vue-material-design-icons/MapMarker.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/MapMarker.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/MapMarker.vue?eeb6","webpack:///nextcloud/node_modules/vue-material-design-icons/MapMarker.vue?vue&type=template&id=42c21a41","webpack:///nextcloud/core/src/views/Profile.vue","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=script&lang=ts","webpack://nextcloud/./core/src/views/Profile.vue?af59","webpack://nextcloud/./core/src/views/Profile.vue?6193","webpack:///nextcloud/core/src/profile.ts","webpack:///nextcloud/core/src/profile/ProfileSections.js","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=0&id=b76e3ec8&prod&lang=scss&scoped=true","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon account-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Account.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Account.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Account.vue?vue&type=template&id=0571d43c\"\nimport script from \"./Account.vue?vue&type=script&lang=js\"\nexport * from \"./Account.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MapMarker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MapMarker.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon map-marker-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"MapMarkerIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./MapMarker.vue?vue&type=template&id=42c21a41\"\nimport script from \"./MapMarker.vue?vue&type=script&lang=js\"\nexport * from \"./MapMarker.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon map-marker-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcContent',{attrs:{\"app-name\":\"profile\"}},[_c('NcAppContent',[_c('div',{staticClass:\"profile__header\"},[_c('div',{staticClass:\"profile__header__container\"},[_c('div',{staticClass:\"profile__header__container__placeholder\"}),_vm._v(\" \"),_c('div',{staticClass:\"profile__header__container__displayname\"},[_c('h2',[_vm._v(_vm._s(_vm.displayname || _vm.userId))]),_vm._v(\" \"),(_vm.pronouns)?_c('span',[_vm._v(\"·\")]):_vm._e(),_vm._v(\" \"),(_vm.pronouns)?_c('span',{staticClass:\"profile__header__container__pronouns\"},[_vm._v(_vm._s(_vm.pronouns))]):_vm._e(),_vm._v(\" \"),(_vm.isCurrentUser)?_c('NcButton',{attrs:{\"type\":\"primary\",\"href\":_vm.settingsUrl},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('PencilIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,4260349822)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Edit Profile'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),(_vm.status.icon || _vm.status.message)?_c('NcButton',{attrs:{\"disabled\":!_vm.isCurrentUser,\"type\":_vm.isCurrentUser ? 'tertiary' : 'tertiary-no-background'},on:{\"click\":_vm.openStatusModal}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.status.icon)+\" \"+_vm._s(_vm.status.message)+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"profile__wrapper\"},[_c('div',{staticClass:\"profile__content\"},[_c('div',{staticClass:\"profile__sidebar\"},[_c('NcAvatar',{staticClass:\"avatar\",class:{ interactive: _vm.isCurrentUser },attrs:{\"user\":_vm.userId,\"size\":180,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true,\"is-no-user\":!_vm.isUserAvatarVisible},nativeOn:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}}),_vm._v(\" \"),_c('div',{staticClass:\"user-actions\"},[(_vm.primaryAction)?_c('NcButton',{staticClass:\"user-actions__primary\",attrs:{\"type\":\"primary\",\"href\":_vm.primaryAction.target,\"icon\":_vm.primaryAction.icon,\"target\":_vm.primaryAction.id === 'phone' ? '_self' :'_blank'},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"user-actions__primary__icon\",attrs:{\"src\":_vm.primaryAction.icon,\"alt\":\"\"}})]},proxy:true}],null,false,1780240256)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.primaryAction.title)+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActions',{staticClass:\"user-actions__other\",attrs:{\"inline\":4}},_vm._l((_vm.otherActions),function(action){return _c('NcActionLink',{key:action.id,attrs:{\"close-after-click\":true,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"user-actions__other__icon\",attrs:{\"src\":action.icon,\"alt\":\"\"}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])}),1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"profile__blocks\"},[(_vm.organisation || _vm.role || _vm.address)?_c('div',{staticClass:\"profile__blocks-details\"},[(_vm.organisation || _vm.role)?_c('div',{staticClass:\"detail\"},[_c('p',[_vm._v(_vm._s(_vm.organisation)+\" \"),(_vm.organisation && _vm.role)?_c('span',[_vm._v(\"•\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.role))])]):_vm._e(),_vm._v(\" \"),(_vm.address)?_c('div',{staticClass:\"detail\"},[_c('p',[_c('MapMarkerIcon',{staticClass:\"map-icon\",attrs:{\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.address)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")],1)]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.headline || _vm.biography || _vm.sections.length > 0)?[(_vm.headline)?_c('h3',{staticClass:\"profile__blocks-headline\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.headline)+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.biography)?_c('p',{staticClass:\"profile__blocks-biography\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.biography)+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"profile__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.userId),{tag:\"component\",attrs:{\"user-id\":_vm.userId}})],1)})]:_c('NcEmptyContent',{staticClass:\"profile__blocks-empty-info\",attrs:{\"name\":_vm.emptyProfileMessage,\"description\":_vm.t('core', 'The headline and about sections will show up here')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountIcon',{attrs:{\"size\":60}})]},proxy:true}])})],2)])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&id=b76e3ec8&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&id=b76e3ec8&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Profile.vue?vue&type=template&id=b76e3ec8&scoped=true\"\nimport script from \"./Profile.vue?vue&type=script&lang=ts\"\nexport * from \"./Profile.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Profile.vue?vue&type=style&index=0&id=b76e3ec8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b76e3ec8\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport Vue from 'vue';\nimport Profile from './views/Profile.vue';\nimport ProfileSections from './profile/ProfileSections.js';\n__webpack_nonce__ = getCSPNonce();\nif (!window.OCA) {\n window.OCA = {};\n}\nif (!window.OCA.Core) {\n window.OCA.Core = {};\n}\nObject.assign(window.OCA.Core, { ProfileSections: new ProfileSections() });\nconst View = Vue.extend(Profile);\nwindow.addEventListener('DOMContentLoaded', () => {\n new View().$mount('#content');\n});\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default class ProfileSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the profile page\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `[data-v-b76e3ec8] #app-content-vue{background-color:unset}.profile[data-v-b76e3ec8]{width:100%;overflow-y:auto}.profile__header[data-v-b76e3ec8]{display:flex;position:sticky;height:190px;top:-40px;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur)}.profile__header__container[data-v-b76e3ec8]{align-self:flex-end;width:100%;max-width:1024px;margin:8px auto;row-gap:8px;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-b76e3ec8]{grid-row:1/3}.profile__header__container__displayname[data-v-b76e3ec8]{padding-inline:16px;width:640px;height:45px;margin-block:125px 0;display:flex;align-items:center;gap:18px}.profile__header__container__displayname h2[data-v-b76e3ec8]{font-size:30px;margin:0}.profile__header__container__displayname span[data-v-b76e3ec8]{font-size:20px}.profile__sidebar[data-v-b76e3ec8]{position:sticky;top:0;align-self:flex-start;padding-top:20px;min-width:220px;margin-block:-150px 0;margin-inline:0 20px}.profile__sidebar[data-v-b76e3ec8] .avatar.avatardiv{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-b76e3ec8] .avatar.avatardiv.interactive .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-b76e3ec8] .avatar.avatardiv .avatardiv__user-status{inset-inline-end:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__wrapper[data-v-b76e3ec8]{background-color:var(--color-main-background);min-height:100%}.profile__content[data-v-b76e3ec8]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-b76e3ec8]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-b76e3ec8],.profile__blocks h3[data-v-b76e3ec8]{cursor:text;overflow-wrap:anywhere}.profile__blocks-details[data-v-b76e3ec8]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-b76e3ec8]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-b76e3ec8]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-b76e3ec8]{margin-inline:0;margin-block:10px 0;font-weight:bold;font-size:20px}.profile__blocks-biography[data-v-b76e3ec8]{white-space:pre-line}@media only screen and (max-width: 1024px){.profile__header[data-v-b76e3ec8]{height:250px;position:unset}.profile__header__container[data-v-b76e3ec8]{grid-template-columns:unset;margin-bottom:110px}.profile__header__container__displayname[data-v-b76e3ec8]{margin:80px 20px 0px 0px !important;width:unset;text-align:center;padding-inline:12px}.profile__header__container__edit-button[data-v-b76e3ec8]{width:fit-content;display:block;margin:60px auto}.profile__header__container__status-text[data-v-b76e3ec8]{margin:4px auto}.profile__content[data-v-b76e3ec8]{display:block}.profile__content .avatar[data-v-b76e3ec8]{margin-top:-110px !important}.profile__blocks[data-v-b76e3ec8]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__sidebar[data-v-b76e3ec8]{margin:unset;position:unset}}.user-actions[data-v-b76e3ec8]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-b76e3ec8]{margin:0 auto}.user-actions__primary__icon[data-v-b76e3ec8]{filter:var(--primary-invert-if-dark)}.user-actions__other[data-v-b76e3ec8]{display:flex;justify-content:center;gap:0 4px}.user-actions__other__icon[data-v-b76e3ec8]{height:20px;width:20px;object-fit:contain;filter:var(--background-invert-if-dark);align-self:center;margin:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAIA,mCACC,sBAAA,CAGD,0BACC,UAAA,CACA,eAAA,CAEA,kCACC,YAAA,CACA,eAAA,CACA,YAAA,CACA,SAAA,CACA,kDAAA,CACA,6CAAA,CACA,qDAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAvBiB,CAwBjB,eAAA,CACA,WAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,0DACC,mBAAA,CACA,WApCgB,CAqChB,WAAA,CACA,oBAAA,CACA,YAAA,CACA,kBAAA,CACA,QAAA,CAEA,6DACC,cAAA,CACA,QAAA,CAGD,+DACC,cAAA,CAMJ,mCACC,eAAA,CACA,KAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,qBAAA,CACA,oBAAA,CAGA,qDACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGC,yFAEC,cAAA,CAIF,6EACC,qBAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKH,mCACC,6CAAA,CACA,eAAA,CAGD,mCACC,gBApGkB,CAqGlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WA7GkB,CA+GlB,yEACC,WAAA,CACA,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CACA,mBAAA,CACA,gBAAA,CACA,cAAA,CAGD,4CACC,oBAAA,CAKH,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CACA,mBAAA,CAEA,0DACC,mCAAA,CACA,WAAA,CACA,iBAAA,CACA,mBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAGD,0DACC,eAAA,CAKH,mCACC,aAAA,CAEC,2CAEA,4BAAA,CAIF,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAGD,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAEA,8CACC,oCAAA,CAIF,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAEA,4CACC,WAAA,CACA,UAAA,CACA,kBAAA,CACA,uCAAA,CACA,iBAAA,CACA,WAAA\",\"sourcesContent\":[\"\\n$profile-max-width: 1024px;\\n$content-max-width: 640px;\\n\\n:deep(#app-content-vue) {\\n\\tbackground-color: unset;\\n}\\n\\n.profile {\\n\\twidth: 100%;\\n\\toverflow-y: auto;\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\tposition: sticky;\\n\\t\\theight: 190px;\\n\\t\\ttop: -40px;\\n\\t\\tbackground-color: var(--color-main-background-blur);\\n\\t\\tbackdrop-filter: var(--filter-background-blur);\\n\\t\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\n\\t\\t&__container {\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: $profile-max-width;\\n\\t\\t\\tmargin: 8px auto;\\n\\t\\t\\trow-gap: 8px;\\n\\t\\t\\tdisplay: grid;\\n\\t\\t\\tgrid-template-rows: max-content max-content;\\n\\t\\t\\tgrid-template-columns: 240px 1fr;\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t&__placeholder {\\n\\t\\t\\t\\tgrid-row: 1 / 3;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname {\\n\\t\\t\\t\\tpadding-inline: 16px; // same as the status text button, see NcButton\\n\\t\\t\\t\\twidth: $content-max-width;\\n\\t\\t\\t\\theight: 45px;\\n\\t\\t\\t\\tmargin-block: 125px 0;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tgap: 18px;\\n\\n\\t\\t\\t\\th2 {\\n\\t\\t\\t\\t\\tfont-size: 30px;\\n\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tspan {\\n\\t\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__sidebar {\\n\\t\\tposition: sticky;\\n\\t\\ttop: 0;\\n\\t\\talign-self: flex-start;\\n\\t\\tpadding-top: 20px;\\n\\t\\tmin-width: 220px;\\n\\t\\tmargin-block: -150px 0;\\n\\t\\tmargin-inline: 0 20px;\\n\\n\\t\\t// Specificity hack is needed to override Avatar component styles\\n\\t\\t:deep(.avatar.avatardiv) {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tmargin: auto;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 8px;\\n\\n\\t\\t\\t&.interactive {\\n\\t\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\t\\t// Show that the status is interactive\\n\\t\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tinset-inline-end: 14px;\\n\\t\\t\\t\\tbottom: 14px;\\n\\t\\t\\t\\twidth: 34px;\\n\\t\\t\\t\\theight: 34px;\\n\\t\\t\\t\\tbackground-size: 28px;\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\t// Styles when custom status icon and status text are set\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\tline-height: 34px;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tmin-height: 100%;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tmax-width: $profile-max-width;\\n\\t\\tmargin: 0 auto;\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__blocks {\\n\\t\\tmargin: 18px 0 80px 0;\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 16px 0;\\n\\t\\twidth: $content-max-width;\\n\\n\\t\\tp, h3 {\\n\\t\\t\\tcursor: text;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t&-details {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tgap: 2px 0;\\n\\n\\t\\t\\t.detail {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t\\t\\tp .map-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-headline {\\n\\t\\t\\tmargin-inline: 0;\\n\\t\\t\\tmargin-block: 10px 0;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t}\\n\\n\\t\\t&-biography {\\n\\t\\t\\twhite-space: pre-line;\\n\\t\\t}\\n\\t}\\n}\\n\\n@media only screen and (max-width: 1024px) {\\n\\t.profile {\\n\\t\\t&__header {\\n\\t\\t\\theight: 250px;\\n\\t\\t\\tposition: unset;\\n\\n\\t\\t\\t&__container {\\n\\t\\t\\t\\tgrid-template-columns: unset;\\n\\t\\t\\t\\tmargin-bottom: 110px;\\n\\n\\t\\t\\t\\t&__displayname {\\n\\t\\t\\t\\t\\tmargin: 80px 20px 0px 0px!important;\\n\\t\\t\\t\\t\\twidth: unset;\\n\\t\\t\\t\\t\\ttext-align: center;\\n\\t\\t\\t\\t\\tpadding-inline: 12px;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\t\\twidth: fit-content;\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\tmargin: 60px auto;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__status-text {\\n\\t\\t\\t\\t\\tmargin: 4px auto;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__content {\\n\\t\\t\\tdisplay: block;\\n\\n\\t\\t\\t .avatar {\\n\\t\\t\\t\\t// Overlap avatar to top header\\n\\t\\t\\t\\tmargin-top: -110px !important;\\n\\t\\t\\t }\\n\\t\\t}\\n\\n\\t\\t&__blocks {\\n\\t\\t\\twidth: unset;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tpadding: 20px 50px 50px 50px;\\n\\t\\t}\\n\\n\\t\\t&__sidebar {\\n\\t\\t\\tmargin: unset;\\n\\t\\t\\tposition: unset;\\n\\t\\t}\\n\\t}\\n}\\n\\n.user-actions {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n\\tmargin-top: 20px;\\n\\n\\t&__primary {\\n\\t\\tmargin: 0 auto;\\n\\n\\t\\t&__icon {\\n\\t\\t\\tfilter: var(--primary-invert-if-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t&__other {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tgap: 0 4px;\\n\\n\\t\\t&__icon {\\n\\t\\t\\theight: 20px;\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\tobject-fit: contain;\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t\\talign-self: center;\\n\\t\\t\\tmargin: 12px; // so we get 44px x 44px\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"802\":\"eddac441912aee9d7aa8\",\"9291\":\"077955af818a227340aa\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1390;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1390: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(96219)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","defineComponent","components","AccountIcon","MapMarkerIcon","NcActionLink","NcActions","NcAppContent","NcAvatar","NcButton","NcContent","NcEmptyContent","PencilIcon","data","loadState","userId","displayname","address","organisation","role","headline","biography","actions","isUserAvatarVisible","pronouns","status","sections","window","OCA","Core","ProfileSections","getSections","computed","isCurrentUser","getCurrentUser","uid","allActions","primaryAction","length","otherActions","console","warn","slice","settingsUrl","generateUrl","emptyProfileMessage","t","user","mounted","document","subscribe","handleStatusUpdate","beforeDestroy","unsubscribe","methods","openStatusModal","statusMenuItem","querySelector","click","showError","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_setupProxy","scopedSlots","_u","key","fn","proxy","icon","message","class","interactive","nativeOn","preventDefault","stopPropagation","apply","arguments","target","id","_l","action","section","index","ref","refInFor","$refs","tag","__webpack_nonce__","getCSPNonce","Object","assign","constructor","_sections","registerSection","push","View","Vue","extend","Profile","addEventListener","$mount","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","url","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","test","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","error","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/lib/private/Profile/ProfileManager.php b/lib/private/Profile/ProfileManager.php
index b2d5016104b..9d3d94fab21 100644
--- a/lib/private/Profile/ProfileManager.php
+++ b/lib/private/Profile/ProfileManager.php
@@ -223,7 +223,7 @@ class ProfileManager implements IProfileManager {
/**
* Return the profile parameters of the target user that are visible to the visiting user
* in an associative array
- * @return array{userId: string, address?: string|null, biography?: string|null, displayname?: string|null, headline?: string|null, isUserAvatarVisible?: bool, organisation?: string|null, pronouns?: non-falsy-string|null, role?: string|null, actions: list<array{id: string, icon: string, title: string, target: ?string}>}
+ * @return array{userId: string, address?: string|null, biography?: string|null, displayname?: string|null, headline?: string|null, isUserAvatarVisible?: bool, organisation?: string|null, pronouns?: string|null, role?: string|null, actions: list<array{id: string, icon: string, title: string, target: ?string}>}
*/
public function getProfileFields(IUser $targetUser, ?IUser $visitingUser): array {
$account = $this->accountManager->getAccount($targetUser);
diff --git a/lib/public/Profile/IProfileManager.php b/lib/public/Profile/IProfileManager.php
index 3f5802a5441..0a1e6733e58 100644
--- a/lib/public/Profile/IProfileManager.php
+++ b/lib/public/Profile/IProfileManager.php
@@ -54,6 +54,7 @@ interface IProfileManager {
IAccountManager::PROPERTY_PHONE => self::VISIBILITY_SHOW_USERS_ONLY,
IAccountManager::PROPERTY_TWITTER => self::VISIBILITY_SHOW,
IAccountManager::PROPERTY_WEBSITE => self::VISIBILITY_SHOW,
+ IAccountManager::PROPERTY_PRONOUNS => self::VISIBILITY_SHOW,
];
/**
@@ -82,7 +83,7 @@ interface IProfileManager {
* Return the profile parameters of the target user that are visible to the visiting user
* in an associative array
*
- * @return array{userId: string, address?: ?string, biography?: ?string, displayname?: ?string, headline?: ?string, isUserAvatarVisible?: bool, organisation?: ?string, role?: ?string, actions: list<array{id: string, icon: string, title: string, target: ?string}>}
+ * @return array{userId: string, address?: string|null, biography?: string|null, displayname?: string|null, headline?: string|null, isUserAvatarVisible?: bool, organisation?: string|null, pronouns?: string|null, role?: string|null, actions: list<array{id: string, icon: string, title: string, target: ?string}>}
* @since 28.0.0
*/
public function getProfileFields(IUser $targetUser, ?IUser $visitingUser): array;