Пример #1
0
 public MessageProcessedEventArgs(BotExtension extension)
 {
     ProcessedBy = extension;
 }
Пример #2
0
        public async Task <RedirectResult> Post()
        {
            if (HttpContext.Request.Form.Count() == 3)
            {
                string login    = HttpContext.Request.Form["login"];
                string password = HttpContext.Request.Form["password"];
                string token    = HttpContext.Request.Form["token"];

                using (ApplicationContext db = new ApplicationContext())
                {
                    var setting = db.Settings.FirstOrDefault(t => t.c_key == "C_URL");
                    var tfsUrl  = db.Settings.FirstOrDefault(t => t.c_key == "C_TFS_URL").c_value;

                    User user;

                    var      base64EncodedBytes = Convert.FromBase64String(token);
                    string   data  = Encoding.UTF8.GetString(base64EncodedBytes);
                    string[] parts = data.Split("|");

                    if (db.Users.Any(t => t.id == int.Parse(parts[0]) && !t.b_disabled) &&
                        db.ChannelAccounts.Any(t => t.account_id == parts[1] && t.c_type == parts[2]))
                    {
                        user = db.Users.FirstOrDefault(t => t.id == int.Parse(parts[0]));
                    }
                    else
                    {
                        return(Redirect("~/?authorize=FAIL&txt=No matches found in the database"));
                    }

                    var tfsToken = Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format("{0}|{1}|{2}|{3}|{4}|{5}|{6}", tfsUrl, user.c_project, user.c_domain, login, password, "", "")));

                    var httpResult = BotExtension.Get(string.Format("{0}/v1/projects", setting.c_value), tfsToken, "application/json");
                    if (httpResult.IsAuthorize)
                    {
                        user.c_login     = login;
                        user.c_password  = Convert.ToBase64String(Encoding.UTF8.GetBytes(password));
                        user.b_authorize = true;
                        var projectItem = Newtonsoft.Json.JsonConvert.DeserializeObject <dynamic>(httpResult.Result);
                        user.c_project  = projectItem.name;
                        user.project_id = Guid.Parse((string)projectItem.id);
                        tfsToken        = Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format("{0}|{1}|{2}|{3}|{4}|{5}|{6}", tfsUrl, user.c_project, user.c_domain, login, password, user.project_id.ToString(), "")));

                        db.Users.Update(user);
                        db.SaveChanges();

                        httpResult = BotExtension.Get(string.Format("{0}/v1/teams", setting.c_value), tfsToken, "text/plain");
                        if (httpResult.IsAuthorize)
                        {
                            await BotExtension.SendMessageAsync(parts[3], parts[4], parts[6], parts[5], "Регистрация в TFS завершена.<br />Укажите в какой команде в находитесь?<br /><br />" + httpResult.Result);
                        }
                        else
                        {
                            user.b_authorize = false;
                            return(Redirect("~/?token=" + token + "&authorize=FAIL&txt=The user was not logged in to the server"));
                        }
                    }
                    else
                    {
                        user.b_authorize = false;
                        return(Redirect("~/?token=" + token + "&authorize=FAIL&txt=The user was not logged in to the server"));
                    }
                }

                return(Redirect("~/?authorize=SUCCESS"));
            }

            return(Redirect("~/?authorize=FAIL&txt=Token, Username, or password not passed"));
        }