Beispiel #1
0
        public static User decodeUser(string data)
        {
            User user = new User();
            data = data.Replace("\"", "");
            Contract contract = new Contract();

            string untreatedRoles = Regex.Match(data, @"\[([^\]]*)\]").Groups[1].Value;
            string treatedRoles = untreatedRoles.Replace(",", "#");
            data = data.Replace(untreatedRoles, treatedRoles);
            data = data.Replace("{", "");
            data = data.Replace("}", "");

            string[] info = data.Split(',');

            foreach(string userInfo in info)
            {
                string[] uInfo = userInfo.Split(':');

                if(uInfo[0].Equals("TKN"))
                {
                    user.token = uInfo[1];
                }
                else if(uInfo[0].Equals("FNM"))
                {
                    user.firstName = uInfo[1];
                }
                else if (uInfo[0].Equals("LNM"))
                {
                    user.lastName = uInfo[1];
                }
                else if (uInfo[0].Equals("UID"))
                {
                    user.userId = Convert.ToInt32(uInfo[1]);
                }
                else if (uInfo[0].Equals("RLS"))
                {
                    Dictionary<string, bool> roleDictionary = new Dictionary<string, bool>();
                    roleDictionary.Add("login", false);
                    roleDictionary.Add("admin", false);
                    roleDictionary.Add("manager", false);
                    roleDictionary.Add("read", false);
                    roleDictionary.Add("write", false);
                    roleDictionary.Add("remove", false);

                    uInfo[1] = uInfo[1].Replace("[", "");
                    uInfo[1] = uInfo[1].Replace("]", "");

                    string[] roles = uInfo[1].Split('#');

                    foreach(string role in roles)
                    {
                        if (role.Equals("1")) roleDictionary["login"] = true;
                        else if (role.Equals("2")) roleDictionary["admin"] = true;
                        else if (role.Equals("3")) roleDictionary["manager"] = true;
                        else if (role.Equals("4")) roleDictionary["read"] = true;
                        else if (role.Equals("5")) roleDictionary["write"] = true;
                        else if (role.Equals("6")) roleDictionary["remove"] = true;
                    }

                    user.roles = roleDictionary;
                }
                else if (uInfo[0].Equals("CID"))
                {
                    contract.contractId = Convert.ToInt32(uInfo[1]);
                }
                else if (uInfo[0].Equals("CLM"))
                {
                    contract.lastModifiedWeb = Convert.ToDouble(uInfo[1]);
                }
            }
            user.contract = contract;

            return user;
        }
Beispiel #2
0
        private void performLogin(string response)
        {
            string status = "";
            string encryptedData = "";
            string key = response.Substring(0, 32);
            string iv = response.Substring(response.Length - 32);

            int keyIndex = response.IndexOf(key);
            encryptedData = response.Remove(keyIndex, key.Length);

            int ivIndex = encryptedData.IndexOf(iv);
            encryptedData = encryptedData.Remove(ivIndex, iv.Length);

            string data = Cryptography.decryptRJ256(encryptedData, key, iv);
            this.userData = JSON.decodeUser(data);

            if(this.userData.roles["write"])
            {
                this.updateDialogLabel("Buscando configurações");

                status = this.configs.getConfigs(this.userData.token);

                if (status.Equals("OK"))
                {
                    this.updateDialogLabel("Carregando contrato");

                    status = this.userData.contract.loadContract();
                    if (!status.Equals("OK"))
                    {
                        if (status.Equals("NOTFOUND"))
                        {
                            this.updateDialogLabel("Impossível carregar os dados locais");
                        }
                        else if (status.Equals("ERROR"))
                        {
                            this.updateDialogLabel("Um erro ocorreu ao ler os dados do contrato");
                        }
                    }
                    else
                    {
                        this.updateDialogLabel("Buscando atualizações");

                        status = this.userData.contract.getUpdates(this.userData.token, this.configs.consultGateway);

                        if (status.Equals("OK"))
                            this.showMainScreen();
                        else
                            this.updateDialogLabel("Servidor incomunicável");
                    }
                }
                else
                {
                    this.updateDialogLabel(status);
                }
            }
            else
            {
                this.updateDialogLabel("Usuário sem permissão de uso");
            }
        }