Exemple #1
0
        private async Task SaveNewCredential()
        {
            await CredentialService.AddCredentialAsync(NewCredential);

            SavedCredentials = await CredentialService.GetCredentialsAsync();

            NewCredential = new JiraCredential();
        }
Exemple #2
0
        public async Task <AuthData> Login(JiraCredential jiraCredential)
        {
            //var loginApi = $"{AppConstant.BaseUrl}api/auth/login";
            var loginApi = $"{AppConstant.BaseUrl}api/Login";

            _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            return(await _httpClientHelper.PostAsync <JiraCredential, AuthData>(_httpClient, loginApi, jiraCredential));
        }
Exemple #3
0
        public async Task AddCredentialAsync(JiraCredential credential)
        {
            var credentials = await GetCredentialsAsync();

            credential.Id = Guid.NewGuid();

            credentials.Add(credential);

            await _localStorage.SetItem(STORAGE_KEY, credentials);
        }
Exemple #4
0
        public async Task <Stream> GetAvatar(JiraCredential jiraCredential, string avatarUrl)
        {
            // Get avatar according to user profile
            var avatarResponse = await _jiraIntegrationHelper.GetAsync(jiraCredential, avatarUrl);

            if (!avatarResponse.IsSuccessStatusCode)
            {
                return(null);
            }

            return(avatarResponse.Content.ReadAsStreamAsync().Result);
        }
Exemple #5
0
        public async Task <AccountInfo> GetAccountInfoByUserKey(JiraCredential jiraCredential)
        {
            if (jiraCredential == null)
            {
                throw new ArgumentNullException(nameof(jiraCredential));
            }

            // Get user profile from jira
            var userProfileResponse = await _jiraIntegrationHelper.GetAsync(jiraCredential, AppConstant.UserProfileUrl + jiraCredential.UserName);

            if (!userProfileResponse.IsSuccessStatusCode)
            {
                return(null);
            }

            var jsonString = userProfileResponse.Content.ReadAsStringAsync().Result;

            var replaceJsonString = jsonString.Replace("16x16", "_16x16").Replace("24x24", "_24x24").Replace("32x32", "_32x32").Replace("48x48", "_48x48");

            // Parse response json to list of user profile
            var userProfiles = JsonConvert.DeserializeObject <List <UserProfile> >(replaceJsonString);

            // Get first in list of user profile
            var userProfile = userProfiles != null && userProfiles.Count > 0 ? userProfiles.FirstOrDefault() : null;

            if (userProfile == null)
            {
                return(null);
            }

            // Get UPS infomation of user
            var accountDto = await _accountRepository.GetAccountInfoByUserKey(jiraCredential.UserName);

            return(new AccountInfo {
                AdId = accountDto.AdId,
                AvatarUrl = userProfile.AvatarUrls._48x48,
                ContactPointName = accountDto.ContactPointName,
                ContactPointPhone = accountDto.ContactPointPhone,
                DisplayName = userProfile.DisplayName,
                GdId = accountDto.GdId,
                GeneralInfo = accountDto.GeneralInfo,
                HomeAddress = accountDto.HomeAddress,
                PassCode = accountDto.PassCode,
                RanId = accountDto.RanId,
                TokenId = accountDto.TokenId,
                UpsMail = accountDto.UpsMail,
                WorkAddress = accountDto.WorkAddress
            });
        }
Exemple #6
0
        public async Task <HttpResponseMessage> Login(JiraCredential jiraCredential)
        {
            if (jiraCredential == null)
            {
                throw new ArgumentNullException(nameof(jiraCredential));
            }

            var isExist = await _userRepository.IsExistUserKey(jiraCredential.UserName);

            if (!isExist)
            {
                return(null);
            }

            return(await _jiraIntegrationHelper.GetAsync(jiraCredential, AppConstant.LoginUrl));
        }
        public async Task <AuthData> Login([FromBody] JiraCredential jiraCredential)
        {
            var httpResponseMessage = await _userBusiness.Login(jiraCredential);

            if (!httpResponseMessage.IsSuccessStatusCode)
            {
                return(null);
            }

            var requestAt = DateTime.UtcNow;
            var expiresIn = requestAt + TimeSpan.FromMinutes(_options.AuthenticationExpiryTimeInMinutes);

            return(new AuthData {
                ExpiresIn = expiresIn,
                Token = GenerateToken(jiraCredential, expiresIn)
            });
        }
Exemple #8
0
        private async Task <JiraTask> GetTaskAsync(string key, JiraCredential credential)
        {
            var queryBuilder = new QueryBuilder
            {
                { "key", key },
                { "site", credential.SiteUrl },
                { "email", credential.Email },
                { "token", credential.ApiToken }
            };

            try
            {
                return(await _httpClient.GetFromJsonAsync <JiraTask>(_baseUrl + queryBuilder.ToQueryString()));
            }
            catch
            {
                return(null);
            }
        }
Exemple #9
0
        protected string GenerateToken(JiraCredential jiraCredential, DateTime expires)
        {
            var handler = new JwtSecurityTokenHandler();

            ClaimsIdentity identity = new ClaimsIdentity(
                new GenericIdentity(jiraCredential.UserName, "TokenAuth"),
                new[] {
                new Claim(MyUpsClaimType.UserKey, jiraCredential.UserName),
                new Claim(MyUpsClaimType.Password, jiraCredential.Password)
            }
                );

            var securityToken = handler.CreateToken(new SecurityTokenDescriptor {
                Issuer             = TokenAuthOption.Issuer,
                Audience           = TokenAuthOption.Audience,
                SigningCredentials = TokenAuthOption.SigningCredentials,
                Subject            = identity,
                Expires            = expires
            });

            return(handler.WriteToken(securityToken));
        }
Exemple #10
0
        public async Task <HttpResponseMessage> GetAsync(JiraCredential jiraCredential, string apiUrl)
        {
            if (jiraCredential == null)
            {
                throw new ArgumentNullException(nameof(jiraCredential));
            }

            if (apiUrl == null)
            {
                throw new ArgumentNullException(nameof(apiUrl));
            }

            var authData        = $"{jiraCredential.UserName}:{jiraCredential.Password}";
            var authHeaderValue = Convert.ToBase64String(Encoding.UTF8.GetBytes(authData));

            // HttpClient implement IDisposable interface therefor we need to use using block to release memory after usage
            using (var httpClient = new HttpClient()) {
                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authHeaderValue);
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                httpClient.Timeout = TimeSpan.FromSeconds(AppConstant.HttpClientTimeOut);

                return(await httpClient.GetAsync(apiUrl));
            }
        }