private string RegisterTagUrl(string text, string CmsHost, EmailQueueTo emailqueueto, Dictionary <string, OneTimeLink> list, string votelink, string id, bool showfamily = false) { string qs = "{0},{1},{2}".Fmt(id, emailqueueto.PeopleId, emailqueueto.Id); OneTimeLink ot; if (list.ContainsKey(qs)) { ot = list[qs]; } else { ot = new OneTimeLink { Id = Guid.NewGuid(), Querystring = qs }; OneTimeLinks.InsertOnSubmit(ot); SubmitChanges(); list.Add(qs, ot); } string url = Util.URLCombine(CmsHost, "/OnlineReg/RegisterLink/{0}".Fmt(ot.Id.ToCode())); if (showfamily) { url += "?showfamily=true"; } return(url); }
private string DoCreateUserTag(string CmsHost, EmailQueueTo emailqueueto) { User user = (from u in Users where u.PeopleId == emailqueueto.PeopleId select u).FirstOrDefault(); if (user != null) { user.ResetPasswordCode = Guid.NewGuid(); user.ResetPasswordExpires = DateTime.Now.AddHours(Setting("ResetPasswordExpiresHours", "24").ToInt()); string link = Util.URLCombine(CmsHost, "/Account/SetPassword/" + user.ResetPasswordCode.ToString()); SubmitChanges(); return(@"<a href=""{0}"">Set password for {1}</a>".Fmt(link, user.Username)); } var ot = new OneTimeLink { Id = Guid.NewGuid(), Querystring = emailqueueto.PeopleId.ToString() }; OneTimeLinks.InsertOnSubmit(ot); SubmitChanges(); string url = Util.URLCombine(CmsHost, "/Account/CreateAccount/{0}".Fmt(ot.Id.ToCode())); return(@"<a href=""{0}"">Create Account</a>".Fmt(url)); }
private string VoteLinkUrl(string text, string CmsHost, EmailQueueTo emailqueueto, Dictionary <string, OneTimeLink> list, string votelink, string id, string msg, string confirm, string smallgroup, string pre) { string qs = "{0},{1},{2},{3},{4}".Fmt(id, emailqueueto.PeopleId, emailqueueto.Id, pre, smallgroup); OneTimeLink ot; if (list.ContainsKey(qs)) { ot = list[qs]; } else { ot = new OneTimeLink { Id = Guid.NewGuid(), Querystring = qs }; OneTimeLinks.InsertOnSubmit(ot); SubmitChanges(); list.Add(qs, ot); } string url = Util.URLCombine(CmsHost, "/OnlineReg/VoteLinkSg/{0}?confirm={1}&message={2}" .Fmt(ot.Id.ToCode(), confirm, HttpUtility.UrlEncode(msg))); return(url); }
private string SendSupportLinkUrl(EmailQueueTo emailqueueto, Dictionary <string, OneTimeLink> list) { string qs = "{0},{1},{2},{3},{4}".Fmt(emailqueueto.OrgId, emailqueueto.PeopleId, emailqueueto.Id, "supportlink", emailqueueto.GoerSupportId); OneTimeLink ot; if (list.ContainsKey(qs)) { ot = list[qs]; } else { ot = new OneTimeLink { Id = Guid.NewGuid(), Querystring = qs }; OneTimeLinks.InsertOnSubmit(ot); SubmitChanges(); list.Add(qs, ot); } string url = Util.URLCombine(CmsHost, "/OnlineReg/SendLink/{0}".Fmt(ot.Id.ToCode())); return(url); }
private string SendLinkUrl(EmailQueueTo emailqueueto, Dictionary <string, OneTimeLink> list, string id, bool showfamily = false) { string qs = "{0},{1},{2},{3}".Fmt(id, emailqueueto.PeopleId, emailqueueto.Id, showfamily ? "registerlink2" : "registerlink"); OneTimeLink ot; if (list.ContainsKey(qs)) { ot = list[qs]; } else { ot = new OneTimeLink { Id = Guid.NewGuid(), Querystring = qs }; OneTimeLinks.InsertOnSubmit(ot); SubmitChanges(); list.Add(qs, ot); } string url = Util.URLCombine(CmsHost, "/OnlineReg/SendLink/{0}".Fmt(ot.Id.ToCode())); return(url); }
public async Task <HttpResponseMessage> VerifyToken(string token, string phoneNumber) { long timeStepMatched = 0; var user = UserManager.Users.First(u => u.PhoneNumber == phoneNumber); var otp = new Totp(Base32Encoder.Decode(user.SinchAuthSecretKey)); bool valid = otp.VerifyTotp(token, out timeStepMatched, new VerificationWindow(2, 2)); if (!valid) { return(new HttpResponseMessage(HttpStatusCode.Forbidden)); } OneTimeLinks.AddLink(user.Id); return(new HttpResponseMessage(HttpStatusCode.OK)); }
public async Task <object> StatusCheck() { var userId = await SignInManager.GetVerifiedUserIdAsync(); if (string.IsNullOrEmpty(userId)) { return(Json(new { status = "Error" })); } var link = OneTimeLinks.GetByUserId(userId); if (link == null) { return(Json(new { status = "Waiting" })); } else { return(Json(new { status = "Ok", guid = link.Guid })); } }
public string DoVolReqLink(string text, string CmsHost, EmailQueueTo emailqueueto) { var list = new Dictionary <string, OneTimeLink>(); const string VolSubLinkRE = "<a[^>]*?href=\"https{0,1}://volreqlink\"[^>]*>.*?</a>"; var re = new Regex(VolSubLinkRE, RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.IgnoreCase); Match match = re.Match(text); while (match.Success) { string tag = match.Value; var doc = new HtmlDocument(); doc.LoadHtml(tag); HtmlNode ele = doc.DocumentNode.Element("a"); string inside = ele.InnerHtml; Dictionary <string, string> d = ele.Attributes.ToDictionary(aa => aa.Name.ToString(), aa => aa.Value); string qs = "{0},{1},{2},{3}" .Fmt(d["mid"], d["pid"], d["ticks"], emailqueueto.PeopleId); OneTimeLink ot = null; if (list.ContainsKey(qs)) { ot = list[qs]; } else { ot = new OneTimeLink { Id = Guid.NewGuid(), Querystring = qs }; OneTimeLinks.InsertOnSubmit(ot); SubmitChanges(); list.Add(qs, ot); } string url = Util.URLCombine(CmsHost, "/OnlineReg/RequestResponse?ans={0}&guid={1}".Fmt(d["ans"], ot.Id.ToCode())); text = text.Replace(tag, @"<a href=""{0}"">{1}</a>".Fmt(url, inside)); match = match.NextMatch(); } return(text); }
public async Task <ActionResult> VerifyTOTP(string guid, string returnUrl) { var userId = await SignInManager.GetVerifiedUserIdAsync(); if (string.IsNullOrEmpty(userId)) { return(View("Error")); } if (OneTimeLinks.VerifyLink(userId, Guid.Parse(guid))) { await SignInManager.SignInAsync(UserManager.FindById(userId), false, false); return(RedirectToLocal(returnUrl)); } else { return(View("Error")); } }
public string RegisterLinkUrl(int orgid, int pid, int queueid, string linktype) { var showfamily = linktype == "registerlink2"; string qs = "{0},{1},{2},{3}".Fmt(orgid, pid, queueid, linktype); var ot = new OneTimeLink { Id = Guid.NewGuid(), Querystring = qs }; OneTimeLinks.InsertOnSubmit(ot); SubmitChanges(); string url = Util.URLCombine(CmsHost, "/OnlineReg/RegisterLink/{0}".Fmt(ot.Id.ToCode())); if (showfamily) { url += "?showfamily=true"; } return(url); }