2015-01-14 32 views
2

在我的Parse Web應用程序中,我有一個管理員可訪問的用戶管理頁面。此頁面允許管理員創建新的用戶帳戶。在不重置當前用戶會話的情況下創建新用戶

要創建帳戶,我使用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.

但我想在不改變當前用戶創建新用戶。我該怎麼做呢?

回答

7

在創建新的用戶帳戶User.signUp之前,保存當前用戶的sessionToken。然後,一旦新的用戶已經創建,用User.become恢復會話:

var sessionToken = Parse.User.current().getSessionToken(); 

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

@pascual_bourque我用你的代碼,並得到這樣的錯誤:'遺漏的類型錯誤:Parse.User.become不是function' –

+0

這應該工作的,是在解析雲代碼。如果你正在做這個客戶端,請確保正確導入Parse模塊... –

+0

@pascal_bourque我剛剛嘗試過,但它不起作用,這裏是代碼(AngularJS)https:// bitbucket .org/snippets/delpo/Bj6px –

0

我可以創建一個「解析雲計算」的方法,可以讓你使用「主鍵」和使用雲的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"); 
     } 
    }); 
}); 
相關問題