I am trying to add new users on my database using Parse. I can't save the new user directly without calling the sign up method, but after signing up the user changes to the user that was signed up and I want to keep the same user that was using the software before.
I found on this link here in StackOverflow that I need to save the previews session and after the new user sign up process I can call the method become
to recover the user that was being used before using the saved session, but it is returning me an error: [Error]: invalid session token (Code: 209, Version: 1.15.3)
. Here is the code:
Usuario.swift
import Foundation
import Parse
class Usuario: PFUser {
@NSManaged var nome: String?
}
The action to save the new user
@IBAction func adicionarGerenciadorButtonClicked(_ sender: NSButton) {
let gerenciador = Usuario()
gerenciador.nome = nomeGerenciadorTextField.stringValue
gerenciador.username = emailGerenciadorTextField.stringValue
gerenciador.email = emailGerenciadorTextField.stringValue
gerenciador.password = senhaGerenciadorSecureTextField.stringValue
let gerenciadorTokenAtual = Usuario.current()!.sessionToken
print(gerenciadorTokenAtual)
gerenciador.signUpInBackground(block: {
(success, error) -> Void in
do {
try Usuario.become(gerenciadorTokenAtual!)
} catch {
}
if error == nil {
self.gerenciadores.append(gerenciador)
self.nomeGerenciadorTextField.stringValue = ""
self.emailGerenciadorTextField.stringValue = ""
self.senhaGerenciadorSecureTextField.stringValue = ""
} else {
self.mostrarErro(mensagem: "Erro", informativo: "Houve um erro ao tentar salvar o gerenciador")
}
})
}
}
I created a 'Parse Cloud' method that allows me use the 'Master Key'
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");
}
});
});