ユーザーのクラス内のすべてのユーザーで ACL:Public read/write が無効になっている場合、parse.com Javascript SDK でユーザー名が取得されているかどうかを確認するにはどうすればよいですか?
説明: セキュリティ上の理由から、クラス/テーブル ユーザーのすべてのユーザーにはプライベートACL (アクセス制御リスト) があります。つまり、パブリック読み取り/書き込みの ACL が無効になっています。これは、認証されたユーザーが自分の情報のみを読み取ることができることを意味します。
想像できるように、ユーザーへのクエリはログインしていないユーザーには空になるため、ユーザークラスでクエリを使用してユーザーが既に取得されているかどうかを確認する方法はありません
新しいユーザーをsingUpすることでこれを回避することができました.Parseは400エラーをいくつかの良い情報とともに返します:
{code: 202, error: "username Test already taken"}
このアプローチの問題は、ユーザーがテキスト領域フィールドに入力している間にリアルタイムで検証を行っていることです。
HTML AngularJS:
<form name="form">
<h3>e-mail</h3>
<input class="form-control"
name="email"
placeholder="try john.doe@mail.com or bad@domain.com"
type="email"
required ng-model="email"
ng-model-options="{ debounce: 100 }"
ui-validate="{blacklist: 'notBlackListed($value)'}"
ui-validate-async="{alreadyExists: 'doesNotExist($modelValue)'}"
>
<span ng-show='form.email.$error.blacklist'>This e-mail is black-listed!</span>
<span ng-show='form.email.$error.alreadyExists'>This e-mail is <b>already taken!</b></span>
<span ng-show='form.email.$pending'>Verifying e-mail on server...</span>
<br>is form valid: {{form.$valid}}
</form>
Javascript AngularJS:
$scope.doesNotExist = function (value) {
Parse.initialize(KEY0, KEY1);
var deferral = $q.defer();
var user = new Parse.User();
user.set("username", "Test");
user.set("password", "anyapssword");
user.signUp(null, {
success: function(user) {
// Hooray! Let them use the app now.
console.log("success!");
// Holly shit now I have to delete the user :( and wait for the full form to be submmited
user.destroy({
success: function(myObject) {
// The object was deleted from the Parse Cloud.
console.log("destroy!!!!!!!!!!!");
},
error: function(myObject, error) {
// The delete failed.
// error is a Parse.Error with an error code and message.
console.log("failed destroy!!!!!!!!!!!");
}
});
deferral.resolve(user);
},
error: function(user, error) {
console.log("Error: " + error.code + " " + error.message);
deferral.reject("mierda!");
}
});
return deferral.promise;
};
では、ACL:Public read/write が無効になっているときに、ユーザー名が parse.com で使用されているかどうかを確認するにはどうすればよいですか?
検証を高速化するために AngularUI プラグインを使用しています: https://htmlpreview.github.io/?https://github.com/angular-ui/ui-validate/master/demo/index.html
ありがとう!