コード例 #1
0
 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()));
 }
コード例 #2
0
        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));
        }
コード例 #3
0
ファイル: ChatRoomFlow.cs プロジェクト: NatShep/TestingGit
 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;
 }
コード例 #4
0
ファイル: MainFlow.cs プロジェクト: NatShep/ChoTISkazal
 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;
 }
コード例 #5
0
        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);