private void showLoginWidget() { var loginWidget = new LoginWidget(this); this.Add(loginWidget); loginWidget.Show(); }
public LoginWidgetTests(LoginWidgetTestsFixture fixture) { _fixture = fixture; _loginWidget = new LoginWidget(_fixture.Token) { AllowedTimeOffset = 60 }; }
protected AuthenticateResult HandleAuthenticateSync() { if (!Request.Headers.TryGetValue("Authorization", out var headerRow)) { return(AuthenticateResult.NoResult()); } if (!AuthenticationHeaderValue.TryParse(headerRow.ToString(), out var header)) { return(AuthenticateResult.NoResult()); } if (header.Scheme != "TelegramWidget") { return(AuthenticateResult.NoResult()); } byte[] infoInBase64; try { infoInBase64 = Convert.FromBase64String(header.Parameter); } catch { return(AuthenticateResult.Fail($"invalid base64 content")); } var jsonParam = Encoding.UTF8.GetString(infoInBase64); TelegramUserInfo userInfo; try { userInfo = JsonSerializer.Deserialize <TelegramUserInfo>(jsonParam); } catch { return(AuthenticateResult.Fail($"invalid json content in base64 string")); } var loginWidget = new LoginWidget(telegramBotOptions.Value.AccessToken) { AllowedTimeOffset = (long)TimeSpan.FromDays(10).TotalSeconds }; var userInfoAsDictionary = ReadUserInfoAsDictionary(userInfo); var authResult = loginWidget.CheckAuthorization(userInfoAsDictionary); if (authResult != Authorization.Valid) { return(AuthenticateResult.Fail($"Incorrect telegram info: {authResult}")); } var tgIdentity = TelegramWidgetClaimsIdentityGenerator.GetIdentityForUserInfo(userInfo); var internalPrincipal = internalClaimsIdentityGenerator.Generate(userInfo); var principal = new ClaimsPrincipal(new ClaimsIdentity[] { tgIdentity, internalPrincipal }); return(AuthenticateResult.Success(new AuthenticationTicket(principal, AuthenticationSchemeConstants.TelegramWidgetAuthenticationScheme))); }
public Authorization LinkAccount(TelegramAccount account) { if (!IsConnected) { Console.WriteLine("Not connected to Telegram."); return(Authorization.MissingFields); } LoginWidget widget = new LoginWidget(OTHubSettings.Instance.Telegram.BotKey); var dict = account.ToStringDictionary(); return(widget.CheckAuthorization(dict)); }
public void LoginActionTest() { LoginWidget loginWidget = LoginPage.Navigate(Driver).GetLoginWidget(); LoginPage.MaximizeWindowSize(Driver); loginWidget.EmailInputElement.SendKeys(LoginPage.AdminEmail); loginWidget.PasswordInputElement.SendKeys(LoginPage.AdminPassword); MainPage dashboardPage = loginWidget.Login(); loginWidget.WaitForMainPage(); Assert.AreEqual(dashboardPage.GetTitleWidget().TitleElement.Text, "Dashboard"); }
public void Real_Data_Valid() { LoginWidget loginWidget = new LoginWidget(LoginWidgetTestsFixture.RealLifeDataTests_Token) { AllowedTimeOffset = int.MaxValue }; foreach (SortedDictionary <string, string> testData in LoginWidgetTestsFixture.RealLifeDataTests) { Authorization authorizationResult = loginWidget.CheckAuthorization(testData); Assert.Equal(Authorization.Valid, authorizationResult); } }
protected override async Task <HandleRequestResult> HandleRemoteAuthenticateAsync() { TelegramOAuthHandler telegramOAuthHandler = this; LoginWidget loginWidget = new LoginWidget(telegramOAuthHandler.Options.ClientSecret); Dictionary <string, string> parameters = telegramOAuthHandler.Context.Request.Query.Keys.ToDictionary(k => k, v => telegramOAuthHandler.Context.Request.Query[v].FirstOrDefault()); Authorization authorized = loginWidget.CheckAuthorization(parameters); if (authorized != Authorization.Valid) { return(HandleRequestResult.Fail($"Authorization state: {authorized}")); } TelegramUser telegramUser = new TelegramUser(parameters[Fields.Id]); ClaimsIdentity identity = new ClaimsIdentity(new[] { new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", telegramUser.Id, "http://www.w3.org/2001/XMLSchema#string", telegramOAuthHandler.ClaimsIssuer), //new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", telegramUser.Username,"http://www.w3.org/2001/XMLSchema#string", telegramOAuthHandler.ClaimsIssuer) }, telegramOAuthHandler.ClaimsIssuer); AuthenticationProperties authenticationProperties = null; var cookie = Request.Cookies["__Telegram"]; if (string.IsNullOrEmpty(cookie)) { return(HandleRequestResult.Fail("State cookie not present")); } authenticationProperties = telegramOAuthHandler.Options.StateDataFormat.Unprotect(cookie); if (authenticationProperties == null) { return(HandleRequestResult.Fail("Authentication properties null")); } JObject user = JObject.FromObject(telegramUser); Response.Cookies.Delete("__Telegram"); return(HandleRequestResult.Success(await telegramOAuthHandler.CreateTicketAsync(identity, authenticationProperties, OAuthTokenResponse.Success(user)))); }
public void GateCreatedByAdminIsNotVisibleByUser() { LoginWidget loginWidget = LoginPage.Navigate(Driver).GetLoginWidget(); LoginPage.MaximizeWindowSize(Driver); loginWidget.EmailInputElement.SendKeys(LoginPage.AdminEmail); loginWidget.PasswordInputElement.SendKeys(LoginPage.AdminPassword); MainPage mainPage = loginWidget.Login(); loginWidget.WaitForMainPage(); NavbarWidget navbarWidget = mainPage.GetNavbarWidget(); GatesPage gatesPage = navbarWidget.NavigateToGates(); navbarWidget.WaitForGatePage(); GateListWidget gateListWidget = gatesPage.GetGateListWidget(); gateListWidget.CreateGate(); gateListWidget.WaitCreateGateWidget(); CreateGateWidget createGateWidget = gatesPage.GetCreateGateWidget(); createGateWidget.NameInputElement.SendKeys("test"); createGateWidget.Create(); TitleWidget titleWidget = mainPage.GetTitleWidget(); titleWidget.Logout(); loginWidget.EmailInputElement.SendKeys(LoginPage.UserEmail); loginWidget.PasswordInputElement.SendKeys(LoginPage.UserPassword); loginWidget.Login(); loginWidget.WaitForMainPage(); navbarWidget.NavigateToGates(); var nameList = gateListWidget.GetAllTableNameData(); CollectionAssert.DoesNotContain(nameList, "test"); }
public async Task <IActionResult> LoginCallback(int id, string first_name, string username, string photo_url, string auth_date, string hash) { Dictionary <string, string> fields = new Dictionary <string, string>() { { "id", id.ToString() }, { "first_name", first_name }, { "username", username }, { "photo_url", photo_url }, { "auth_date", auth_date }, { "hash", hash } }; var loginWidget = new LoginWidget(AppSettingsProvider.BotApiKey); try { if (loginWidget.CheckAuthorization(fields) == Authorization.Valid) { var aspnetuser = await _appUsersManagerService.GetUserAsync(fields["username"], long.Parse(fields["id"])); _appUsersManagerService.Update_Photourl(aspnetuser.TelegramId, fields["photo_url"]); //sign the user and go to home await _signInManager.SignInAsync(aspnetuser, isPersistent : false); } } catch (Exception ex) { var log = new Log(); log.LogMessage(ex.Message + " " + ex.StackTrace + " " + ex.InnerException); _appdb.Logger.Add(log); _appdb.SaveChangesAsync().Wait(); } return(RedirectToAction("Index", "Home")); }
private void CreateLoginPage() { Guid parentPageID = new Guid(SampleConstants.InternalResourcesGroupPageId); var hasCreatedPage = SampleUtilities.CreateLocalizedPage(new Guid(SampleConstants.LoginPageId), "Login", parentPageID, false, false, "en"); if (hasCreatedPage) { SampleUtilities.SetTemplateToLocalizedPage(new Guid(SampleConstants.LoginPageId), new Guid(SampleConstants.EducationTemplateId), "en"); // Add layout control var mainLayoutControl = new LayoutControl(); var mainLayoutColumns = new List<ColumnDetails>(); var mainLayoutColumn1 = new ColumnDetails() { ColumnSpaces = new ColumnSpaces(0, 15, 0, 0), PlaceholderId = "Left", ColumnWidthPercentage = 50 }; mainLayoutColumns.Add(mainLayoutColumn1); var mainLayoutColumn2 = new ColumnDetails() { ColumnSpaces = new ColumnSpaces(0, 0, 0, 15), PlaceholderId = "Right", ColumnWidthPercentage = 50 }; mainLayoutColumns.Add(mainLayoutColumn2); mainLayoutControl.Layout = SampleUtilities.GenerateLayoutTemplate(mainLayoutColumns, string.Empty); mainLayoutControl.ID = "Main"; SampleUtilities.AddControlToLocalizedPage(new Guid(SampleConstants.LoginPageId), mainLayoutControl, "content", "50% + 50% (custom)", "en"); ContentBlockBase pageTitle = new ContentBlockBase(); pageTitle.Html = "<h1>Login</h1>"; SampleUtilities.AddControlToLocalizedPage(new Guid(SampleConstants.LoginPageId), pageTitle, "Main_Left", "Content block", "en"); LoginWidget login = new LoginWidget(); SampleUtilities.AddControlToLocalizedPage(new Guid(SampleConstants.LoginPageId), login, "Main_Left", "Login", "en"); string registerPageUrl = string.Empty; var count = 0; App.WorkWith().Pages().Where(pN => pN.Id == new Guid(SampleConstants.RegistrationPageId)).Count(out count); if (count != 0) { PageNode node = App.WorkWith().Page(new Guid(SampleConstants.RegistrationPageId)).Get(); registerPageUrl = node.UrlName; } ContentBlock registerInfo = new ContentBlock(); registerInfo.Html = String.Format(@"<div> <div> <p>Please click on ""Register"" and complete the form on the next screen to register for our service. You will receive a confirmation email during the next few minutes. <br /> <br /> Once registered, you are ready to use our service in full mode. </p> <p><strong>You need to be logged in to:</strong></p> <ul> <li>post in forums</li> <li>manage your account</li> <li>download documents</li> </ul> <a class=""important"" href=""{0}"">Register</a></div> </div>", registerPageUrl); SampleUtilities.AddControlToLocalizedPage(new Guid(SampleConstants.LoginPageId), registerInfo, "Main_Right", "Login", "en"); } hasCreatedPage = SampleUtilities.CreateLocalizedPage(new Guid(SampleConstants.LoginPageId), "Login", parentPageID, false, false, "de"); if (hasCreatedPage) { SampleUtilities.SetTemplateToLocalizedPage(new Guid(SampleConstants.LoginPageId), new Guid(SampleConstants.EducationTemplateId), "de"); // Add layout control var mainLayoutControl = new LayoutControl(); var mainLayoutColumns = new List<ColumnDetails>(); var mainLayoutColumn1 = new ColumnDetails() { ColumnSpaces = new ColumnSpaces(0, 15, 0, 0), PlaceholderId = "Left", ColumnWidthPercentage = 50 }; mainLayoutColumns.Add(mainLayoutColumn1); var mainLayoutColumn2 = new ColumnDetails() { ColumnSpaces = new ColumnSpaces(0, 0, 0, 15), PlaceholderId = "Right", ColumnWidthPercentage = 50 }; mainLayoutColumns.Add(mainLayoutColumn2); mainLayoutControl.Layout = SampleUtilities.GenerateLayoutTemplate(mainLayoutColumns, string.Empty); mainLayoutControl.ID = "Main"; SampleUtilities.AddControlToLocalizedPage(new Guid(SampleConstants.LoginPageId), mainLayoutControl, "content", "50% + 50% (custom)", "de"); ContentBlockBase pageTitle = new ContentBlockBase(); pageTitle.Html = "<h1>Login</h1>"; SampleUtilities.AddControlToLocalizedPage(new Guid(SampleConstants.LoginPageId), pageTitle, "Main_Left", "Content block", "de"); LoginWidget login = new LoginWidget(); SampleUtilities.AddControlToLocalizedPage(new Guid(SampleConstants.LoginPageId), login, "Main_Left", "Login", "de"); string registerPageUrl = string.Empty; var count = 0; App.WorkWith().Pages().Where(pN => pN.Id == new Guid(SampleConstants.RegistrationPageId)).Count(out count); if (count != 0) { PageNode node = App.WorkWith().Page(new Guid(SampleConstants.RegistrationPageId)).Get(); registerPageUrl = node.UrlName; } ContentBlock registerInfo = new ContentBlock(); registerInfo.Html = String.Format(@"<div> <p>Bitte klicken Sie auf ""Registrieren"" und füllen Sie das Formular auf der nächsten Seite, um für unseren Service registrieren. Sie erhalten eine Bestätigung per E-Mail in den nächsten Minuten erhalten.<br /> <br /> Einmal registriert, können Sie unseren Service in Voll-Modus verwenden. </p> <p><strong>Sie müssen registriert sein, um Folgendes machen zu können:</strong></p> <ul> <li>In den Foren schreiben</li> <li>Ihr Account managen</li> <li>Dokumente herunterladen</li> </ul> <p><a href=""{0}"">Registrierung</a></p> </div>", registerPageUrl); SampleUtilities.AddControlToLocalizedPage(new Guid(SampleConstants.LoginPageId), registerInfo, "Main_Right", "Login", "de"); } }