どうやら、
、ってことは何となく分かる。
accounts-facebook
accounts-password
{{> loginButtons}}
HTML ( with Blaze )
( インストールする必要なし )
Setup方法(※うまくいかない場合は一度入れなおしてみることをおすすめ:追記2016/3/2)
meteor add useraccounts:bootstrap
meteor add accounts-password
meteor add accounts-facebook
meteor add accounts-google
meteor add service-configuration
meteor add accounts-ui
サードパーティーログインサービス設定
※設定しないとfacebook等のログインボタンなどが表示されない
使用できるテンプレート
{{> atForm}}
のみ。
だけど、
sign in, sign up, forgot password, reset password, change password, and enroll account forms
アカウント機能に必要なものは網羅している。
※navbars用に、基本的なログインボタンがあったりもする
{{> atNavButton}
Google が提供してくれるコレ
<template name="myLogin">
{{#if atDisabled}}
Please wait...
{{/if}}
<div class="{{atClass}}">
{{> atForm}}
</div>
</template>
Template.myLogin.helpers({
atDisabled: function() {
//成功失敗にかかわらず完了したらfalseを返す
return AccountsTemplates.disabled();
},
atClass: function() {
return AccountsTemplates.disabled() ? 'disabled' : 'active';
}
});
AccountsTemplates.configure({
forbidClientAccountCreation: true
});
AccountsTemplates.addField({
_id: 'name', // ユニークなフィールド名
type: 'text', // 他にはpassword, email, tel, url, checkbox, select, radio, hidden
displayName: "Name",
func: function(value){return value !== 'Full Name';}, // バリデーション用
errStr: 'Only "Full Name" allowed!',
});
AccountsTemplates.addField({
_id: "fruit",
type: "radio",
displayName: "Preferred Fruit",
select: [
{
text: "Apple",
value: "aa",
}, {
text: "Banana",
value: "bb",
}, {
text: "Carrot",
value: "cc",
},
],
});
AccountsTemplates.removeField('password');
AccountsTemplates.addField({
_id: 'password',
type: 'password',
required: true,
minLength: 6,
re: /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{6,}/,
errStr: 'At least 1 digit, 1 lower-case and 1 upper-case',
});
var pwd = AccountsTemplates.removeField('password');
//↑表示するフォームの順番を変更するため
AccountsTemplates.removeField('email');
AccountsTemplates.addFields([
{
_id: "username",
type: "text", displayName: "username", required: true,
minLength: 5,
},
{
_id: 'email',
type: 'email', displayName: "email", required: true,
re: /.+@(.+){2,}\.(.+){2,}/,
errStr: 'Invalid email',
},
{
_id: 'username_and_email',
type: 'text',
required: true,
displayName: "Login",
},
pwd //ここに配置
]);
// Give Alice the 'admin' role
Roles.addUsersToRoles(aliceUserId, 'admin', Roles.GLOBAL_GROUP);
// Give Bob the 'moderator' role for a particular category
Roles.addUsersToRoles(bobsUserId, 'moderator', categoryId);
const forumPost = Posts.findOne(postId);
const canDelete = Roles.userIsInRole(userId,
['admin', 'moderator'], forumPost.categoryId);
if (! canDelete) {
throw new Meteor.Error('unauthorized',
'Only admins and moderators can delete posts.');
}
Posts.remove(postId);
ユーザーが権限を持っているかチェックする
Lists.helpers({
// ...
editableBy(userId) {
if (!this.userId) {
return true;
}
return this.userId === userId;
},
// ...
});
const list = Lists.findOne(listId);
if (! list.editableBy(userId)) {
throw new Meteor.Error('unauthorized',
'Only list owners can edit private lists.');
}