在不重置当前用户会话的情况下创建新用户
Creating new users without resetting current user session
在我的 Parse 网络应用程序中,我有一个管理员可以访问的用户管理页面。此页面允许管理员创建新的用户帐户。
要创建帐户,我使用 Parse.User.signUp()
。
效果很好,但它有重置当前用户会话的令人讨厌的副作用,这会注销创建新用户帐户的管理员。
这实际上是 User.signUp()
的 documented 行为:
This will create a new Parse.User on the server, and also persist the session in localStorage so that you can access the user using #current.
但我想在不更改当前用户的情况下创建新用户。我该怎么做?
在使用 User.signUp
创建新用户帐户之前,保存当前用户的 sessionToken
。然后,一旦创建了新用户,使用 User.become
:
恢复会话
var sessionToken = Parse.User.current().getSessionToken();
Parse.User.signUp(username, password).then(function(newUser) {
Parse.User.become(sessionToken);
});
我可以创建一个 'Parse Cloud' 方法,允许您使用 'Master Key' 并使用云从 SDK 调用它。
Parse.Cloud.define('salvarUsuario', function(request, response) {
var nomeCompleto = request.params.nomeCompleto;
var Email = request.params.Email;
var Username = request.params.Username;
var cpf = request.params.cpf;
var Password = request.params.Password;
var funcionarioBool = request.params.funcionarioBool;
var ativo = request.params.ativo;
var primeiroAcesso = request.params.primeiroAcesso;
var tipoAcesso = request.params.tipoAcesso;
var medicoBool = request.params.medicoBool;
//Parâmetros de controle
var fotoSelecionada = request.params.fotoSelecionada;
var usuario = new Parse.User();
usuario.set("nomeCompleto", nomeCompleto);
usuario.set("email", Email);
usuario.set("username", Username);
usuario.set("cpf", cpf);
usuario.set("password", Password);
usuario.set("funcionarioBool", funcionarioBool);
usuario.set("ativo", ativo);
usuario.set("primeiroAcesso", primeiroAcesso);
usuario.set("tipoAcesso", tipoAcesso);
usuario.set("medicoBool", medicoBool);
if(medicoBool) {
var medicoId = request.params.medico;
var Medico = Parse.Object.extend("Medico");
var medicoPointer = Medico.createWithoutData(medicoId);
usuario.set("medico", medicoPointer);
}
if(fotoSelecionada) {
var bytes = request.params.bytesFoto;
var file = new Parse.File("foto.png", bytes, "image/png");
usuario.set("foto", file);
}
usuario.save(null, {
useMasterKey: true,
success: function(salvoUsuario){
// The user was saved correctly
response.success("1");
},
error: function(error){
response.error("Erro ao criar novo usuário");
}
});
});
在我的 Parse 网络应用程序中,我有一个管理员可以访问的用户管理页面。此页面允许管理员创建新的用户帐户。
要创建帐户,我使用 Parse.User.signUp()
。
效果很好,但它有重置当前用户会话的令人讨厌的副作用,这会注销创建新用户帐户的管理员。
这实际上是 User.signUp()
的 documented 行为:
This will create a new Parse.User on the server, and also persist the session in localStorage so that you can access the user using #current.
但我想在不更改当前用户的情况下创建新用户。我该怎么做?
在使用 User.signUp
创建新用户帐户之前,保存当前用户的 sessionToken
。然后,一旦创建了新用户,使用 User.become
:
var sessionToken = Parse.User.current().getSessionToken();
Parse.User.signUp(username, password).then(function(newUser) {
Parse.User.become(sessionToken);
});
我可以创建一个 'Parse Cloud' 方法,允许您使用 'Master Key' 并使用云从 SDK 调用它。
Parse.Cloud.define('salvarUsuario', function(request, response) {
var nomeCompleto = request.params.nomeCompleto;
var Email = request.params.Email;
var Username = request.params.Username;
var cpf = request.params.cpf;
var Password = request.params.Password;
var funcionarioBool = request.params.funcionarioBool;
var ativo = request.params.ativo;
var primeiroAcesso = request.params.primeiroAcesso;
var tipoAcesso = request.params.tipoAcesso;
var medicoBool = request.params.medicoBool;
//Parâmetros de controle
var fotoSelecionada = request.params.fotoSelecionada;
var usuario = new Parse.User();
usuario.set("nomeCompleto", nomeCompleto);
usuario.set("email", Email);
usuario.set("username", Username);
usuario.set("cpf", cpf);
usuario.set("password", Password);
usuario.set("funcionarioBool", funcionarioBool);
usuario.set("ativo", ativo);
usuario.set("primeiroAcesso", primeiroAcesso);
usuario.set("tipoAcesso", tipoAcesso);
usuario.set("medicoBool", medicoBool);
if(medicoBool) {
var medicoId = request.params.medico;
var Medico = Parse.Object.extend("Medico");
var medicoPointer = Medico.createWithoutData(medicoId);
usuario.set("medico", medicoPointer);
}
if(fotoSelecionada) {
var bytes = request.params.bytesFoto;
var file = new Parse.File("foto.png", bytes, "image/png");
usuario.set("foto", file);
}
usuario.save(null, {
useMasterKey: true,
success: function(salvoUsuario){
// The user was saved correctly
response.success("1");
},
error: function(error){
response.error("Erro ao criar novo usuário");
}
});
});