private static Dictionary <string, string> ReadUserInfoAsDictionary(TelegramUserInfo userInfo) { return(userInfo.GetType() .GetProperties() .Select(p => (key: p.GetCustomAttribute <JsonPropertyNameAttribute>().Name, value: p.GetValue(userInfo))) .Where(p => p.value != null) .ToDictionary(p => p.key, p => p.value?.ToString())); }
public ClaimsIdentity Generate(TelegramUserInfo userInfo) { var isAdmin = options.Value.Admins?.Any(a => a.Id == userInfo.Id) == true; var claims = isAdmin ? new Claim[] { new Claim(InternalClaimConstants.SYSTEM_ADMIN_CLAIM_TYPE, "") } : Enumerable.Empty <Claim>(); return(new ClaimsIdentity(claims, InternalClaimConstants.IDENTITY_AUTH_TYPE)); }
public ChatRoomFlow(ChatIO chatIo, TelegramUserInfo userInfo, BotSettings settings, AddWordService addWordsService, UsersWordsService usersWordsService, UserService userService ) { ChatIo = chatIo; _userInfo = userInfo; _settings = settings; _addWordsService = addWordsService; _usersWordsService = usersWordsService; _userService = userService; }
public MainFlow( ChatIO chatIo, TelegramUserInfo userInfo, BotSettings settings, AddWordService addWordsService, UsersWordsService usersWordsService, UserService userService, LocalDictionaryService localDictionaryService, LearningSetService learningSetService) { ChatIo = chatIo; _userInfo = userInfo; _settings = settings; _addWordsService = addWordsService; _usersWordsService = usersWordsService; _userService = userService; _localDictionaryService = localDictionaryService; _learningSetService = learningSetService; }
private async Task <(bool, Claim[])> TryGetInternalClaims(TelegramUserInfo user) { var userInfoJson = JsonSerializer.Serialize(user); httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("TelegramWidget", Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(userInfoJson))); var response = await httpClient.PostAsync("/api/auth", null); if (response.StatusCode == System.Net.HttpStatusCode.OK) { await localStorage.RemoveItemAsync("telegramUserInfo"); await localStorage.SetItemAsync("telegramUserInfo", user); var responseText = await response.Content.ReadAsStringAsync(); var claimModels = JsonSerializer.Deserialize <ClaimModel[]>(responseText, new JsonSerializerOptions(JsonSerializerDefaults.Web)); var claims = claimModels.Select(c => new Claim(c.Type, c.Value)).ToArray(); return(true, claims); } return(false, default);