在不重置当前用户会话的情况下创建新用户

时间:2015-01-14 15:39:12

标签: parse-platform

在我的Parse Web应用程序中,我有一个管理员可以访问的用户管理页面。此页面允许管理员创建新的用户帐户。

要创建帐户,我使用Parse.User.signUp()

它运行良好,但它具有重置当前用户会话的令人讨厌的副作用,这会导致创建新用户帐户的管理员注销。

这实际上是User.signUp()的{​​{3}}行为:

  

这将在服务器上创建一个新的Parse.User,并在localStorage中保存会话,以便您可以使用#current访问该用户。

但我想在不改变当前用户的情况下创建新用户。我该怎么做?

2 个答案:

答案 0 :(得分:9)

在使用User.signUp创建新用户帐户之前,请保存当前用户的sessionToken。然后,在创建新用户后,使用User.become

恢复会话
var sessionToken = Parse.User.current().getSessionToken();

Parse.User.signUp(username, password).then(function(newUser) {
    Parse.User.become(sessionToken);
});

答案 1 :(得分:0)

我可以创建一个' Parse Cloud'允许您使用'主密钥'的方法并使用Cloud从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");
      }
  });
});