コード例 #1
0
ファイル: IAMUserClass.cs プロジェクト: radtek/safeid
        public Boolean ChangeUserPasswd(String authUser, String authPassword, String userLogin, String newPassword)
        {
            //Autentica para poder realizar a busca do usuário
            APIAccessToken accessToken = GetToken(authUser, authPassword);

            if ((accessToken != null) && (accessToken.IsValid))
            {
                //Realiza a troca da senha
                String jData = "{\"apiver\": \"1.0\",\"method\": \"user.changepassword\",\"parameters\": {\"user\": \"" + userLogin + "\", \"password\": \"" + newPassword + "\",\"must_change\": false},\"auth\": \"" + accessToken.Authorization + "\",\"id\": \"1\"}";

                APIChangePasswdResult ret = JsonWebRequest <APIChangePasswdResult>(urlAPI, jData, "application/json", null, "POST");
                if (ret == null)
                {
                    throw new Exception("Erro on change password");
                }
                else if (ret.error != null)
                {
                    String errMsg = "";

                    //Aqui pode ser tratado especificamente cada erro
                    //Obs: Melhorar as mensagens

                    if (ret.error.lowercase)
                    {
                        errMsg += "Letra minúscula não definida";
                    }
                    if (ret.error.uppercase)
                    {
                        errMsg += "Letra maiúscula não definida";
                    }
                    if (ret.error.number_char)
                    {
                        errMsg += "Tamanho mínimo da senha (mínimo 8 dígitos)";
                    }
                    if (ret.error.numbers)
                    {
                        errMsg += "Número não definido";
                    }
                    if (ret.error.symbols)
                    {
                        errMsg += "Caracteres especiais não definido";
                    }

                    throw new Exception("Erro on change password: "******""));
                }
                else if (ret.success == true)
                {
                    //Senha trocada com sucesso
                    return(true);
                }
            }
            else
            {
                //Erro ao realizar a autenticação
                return(false);
            }

            return(false);
        }
コード例 #2
0
ファイル: IAMUserClass.cs プロジェクト: radtek/safeid
        public void LoadFromFile()
        {
            System.Reflection.Assembly asm = System.Reflection.Assembly.GetAssembly(this.GetType());
            String tokenFile = Path.GetFullPath(asm.Location) + ".apiToken";

            if (!File.Exists(tokenFile))
            {
                return;
            }

            String         jData = File.ReadAllText(tokenFile, Encoding.UTF8);
            APIAccessToken item  = IAMUserClass.Deserialize <APIAccessToken>(jData);

            this.access_token = item.access_token;
            this.create_time  = item.create_time;
            this.expires_in   = item.expires_in;
        }
コード例 #3
0
ファイル: IAMUserClass.cs プロジェクト: radtek/safeid
        private APIAccessToken GetToken(String userName, String userPassword)
        {
            APIAccessToken accessToken = new APIAccessToken();

            accessToken.LoadFromFile();

            //Verifica em cache se o token ainda e válido
            if (!accessToken.IsValid)
            {
                accessToken = new APIAccessToken();

                try
                {
                    String jData = "{\"apiver\": \"1.0\",\"method\": \"user.login\",\"parameters\": {\"user\": \"" + userName + "\", \"password\": \"" + userPassword + "\", \"userData\": false},\"id\": \"1\"}";

                    APIAuthResult ret = JsonWebRequest <APIAuthResult>(urlAPI, jData, "application/json", null, "POST");
                    if (ret == null)
                    {
                        accessToken.error = "Empty return";
                        return(accessToken);
                    }
                    else if (ret.error != null)
                    {
                        accessToken.error = ret.error.data + (ret.error.debug != null ? ret.error.debug : "");
                        return(accessToken);
                    }
                    else if (!String.IsNullOrEmpty(ret.result.sessionid))
                    {
                        accessToken.access_token = ret.result.sessionid;
                        accessToken.expires_in   = ret.result.expires;
                        accessToken.create_time  = ret.result.create_time;
                        //accessToken.SaveToFile();
                    }
                }
                catch (Exception ex)
                {
                    accessToken.error = "Error on get API Auth 1.0 Token: " + ex.Message;
                    return(accessToken);
                }
            }

            return(accessToken);
        }