创建用户配置文件
Create User Profile Piece
我想创建一个用户配置文件,它加入 apostrophe-user 以便管理员可以为特定用户创建 public 配置文件。我知道不推荐这样做,但我认为这是让这边的人拥有 public 个人资料并能够登录和编辑他们的个人资料的唯一选择。否则,管理员需要更改数百人的用户配置文件,这将导致全职工作。现在不需要用户注册,但将来可能需要,所以我的模块应该与 apsotrophe-signup 兼容。
开头很简单:
// lib/modules/profiles/index.js
module.exports = {
extend: 'apostrophe-pieces',
name: 'profile',
label: 'Profile',
pluralLabel: 'Profiles',
slugPrefix: 'profile-',
addFields: [
{
name: '_user',
label: 'User',
type: 'joinByOne',
withType: 'apostrophe-user',
idField: 'userId',
withJoins: true
}
]
};
这是棋子小部件:
// lib/modules/profiles-widgets/views/widget.html
{% for piece in data.widget._pieces %}
<li class="collection-item avatar">
{{ piece._user.username }}
{{ piece._user.title }}
{{ piece._user.firstName }}
{{ piece._user.lastName }}
{{ piece._user.email }}
<img class="circle grey"
src="{{ apos.attachments.url(piece._user._thumbnail.attachment, { size: data.options.size or 'one-sixth' }) }}"
srcset="{{ apos.images.srcset(piece._user._thumbnail.attachment) }}"
sizes="{{ '8vw' }}"
alt="{{ piece._user._thumbnail.title }}"
>
{{ apos.area(piece._user, 'bio', { edit: false }) }}
</li>
{% endfor %}
字段 _thumbnail
和 bio
我添加到 apostrophe-user
:
// lib/modules/apostrophe-users/index.js
module.exports = {
beforeConstruct: function(self, options) {
options.addFields = [
{
name: '_thumbnail',
type: 'joinByOne',
withType: 'apostrophe-image',
label: 'Profile Picture',
help: 'Choose profile picture',
filters: {
projection: {
attachment: true,
description: true,
title: true
}
}
},
{
name: 'bio',
label: 'Biography',
type: 'area',
help: 'Choose Biography',
options: {
limit: 1,
widgets: {
'apostrophe-rich-text': {
toolbar: [ 'Bold' ],
controls: {
movable: false,
cloneable: false,
removable: true,
position: 'top-right'
}
}
}
}
}
].concat(options.addFields || []);
}
};
登录后,我会看到 widget.html
中定义的所有字段,但是如果我注销,则什么也看不到。我预计此原因 apostrophe-users
已被 取消发布。
我尝试将 published
字段添加到 apostrophe-user
,但这没有成功。
// lib/modules/apostrophe-users/index.js
...
{
type: 'boolean',
name: 'published',
label: 'Published',
def: true,
},
...
我哪里做错了?
作为第二个问题,我想知道是否可以允许登录用户编辑他自己的个人资料?
在 Apostrophe 2 中不直接支持将用户用作公开可用数据。常见的解决方法是创建“配置文件”片段类型或类似的东西,然后添加连接以将其连接到用户(如果需要)帮助组织。
在用户模块上设置 adminOnly: false
您可以直接配置权限,但这会使围绕用户的安全问题成为您职责的一部分。
更新:
在这样的项目中写入 lib/modules/apostrophe-users/index.js
会将 published
字段添加回用户:
module.exports = {
defaultRemoveFields: [],
defaultRemoveFilters: [],
defaultRemoveColumns: []
};
默认情况下,这些数组包括 'published'
,对 UI 隐藏发布选项。
一旦发布,它们将在注销时可见。同样,确保在执行此操作时考虑到安全隐患。
我想创建一个用户配置文件,它加入 apostrophe-user 以便管理员可以为特定用户创建 public 配置文件。我知道不推荐这样做,但我认为这是让这边的人拥有 public 个人资料并能够登录和编辑他们的个人资料的唯一选择。否则,管理员需要更改数百人的用户配置文件,这将导致全职工作。现在不需要用户注册,但将来可能需要,所以我的模块应该与 apsotrophe-signup 兼容。
开头很简单:
// lib/modules/profiles/index.js
module.exports = {
extend: 'apostrophe-pieces',
name: 'profile',
label: 'Profile',
pluralLabel: 'Profiles',
slugPrefix: 'profile-',
addFields: [
{
name: '_user',
label: 'User',
type: 'joinByOne',
withType: 'apostrophe-user',
idField: 'userId',
withJoins: true
}
]
};
这是棋子小部件:
// lib/modules/profiles-widgets/views/widget.html
{% for piece in data.widget._pieces %}
<li class="collection-item avatar">
{{ piece._user.username }}
{{ piece._user.title }}
{{ piece._user.firstName }}
{{ piece._user.lastName }}
{{ piece._user.email }}
<img class="circle grey"
src="{{ apos.attachments.url(piece._user._thumbnail.attachment, { size: data.options.size or 'one-sixth' }) }}"
srcset="{{ apos.images.srcset(piece._user._thumbnail.attachment) }}"
sizes="{{ '8vw' }}"
alt="{{ piece._user._thumbnail.title }}"
>
{{ apos.area(piece._user, 'bio', { edit: false }) }}
</li>
{% endfor %}
字段 _thumbnail
和 bio
我添加到 apostrophe-user
:
// lib/modules/apostrophe-users/index.js
module.exports = {
beforeConstruct: function(self, options) {
options.addFields = [
{
name: '_thumbnail',
type: 'joinByOne',
withType: 'apostrophe-image',
label: 'Profile Picture',
help: 'Choose profile picture',
filters: {
projection: {
attachment: true,
description: true,
title: true
}
}
},
{
name: 'bio',
label: 'Biography',
type: 'area',
help: 'Choose Biography',
options: {
limit: 1,
widgets: {
'apostrophe-rich-text': {
toolbar: [ 'Bold' ],
controls: {
movable: false,
cloneable: false,
removable: true,
position: 'top-right'
}
}
}
}
}
].concat(options.addFields || []);
}
};
登录后,我会看到 widget.html
中定义的所有字段,但是如果我注销,则什么也看不到。我预计此原因 apostrophe-users
已被 published
字段添加到 apostrophe-user
,但这没有成功。
// lib/modules/apostrophe-users/index.js
...
{
type: 'boolean',
name: 'published',
label: 'Published',
def: true,
},
...
我哪里做错了?
作为第二个问题,我想知道是否可以允许登录用户编辑他自己的个人资料?
在 Apostrophe 2 中不直接支持将用户用作公开可用数据。常见的解决方法是创建“配置文件”片段类型或类似的东西,然后添加连接以将其连接到用户(如果需要)帮助组织。
在用户模块上设置 adminOnly: false
您可以直接配置权限,但这会使围绕用户的安全问题成为您职责的一部分。
更新:
在这样的项目中写入 lib/modules/apostrophe-users/index.js
会将 published
字段添加回用户:
module.exports = {
defaultRemoveFields: [],
defaultRemoveFilters: [],
defaultRemoveColumns: []
};
默认情况下,这些数组包括 'published'
,对 UI 隐藏发布选项。
一旦发布,它们将在注销时可见。同样,确保在执行此操作时考虑到安全隐患。