public MyIntegrationsController() { Get("/api/v1/me/integrations/status/get", _ => { var me = UserRepository.Find(CurrentRequest.UserId); var githubToken = me.ServiceAccessToken(ServiceType.GitHub); JObject githubUser = null; if (githubToken != null) { var githubClient = new GitHubClient(new ProductHeaderValue("GitCom")); githubClient.Credentials = new Credentials(githubToken.access_token); var rawGitHubUser = githubClient.User.Current().Result; githubUser = new JObject(); githubUser["login"] = rawGitHubUser.Login; githubUser["email"] = rawGitHubUser.Email; } var gitlabToken = me.ServiceAccessToken(ServiceType.GitLab); JObject gitlabUser = null; if (gitlabToken != null) { var client = new GitLabClient(gitlabToken.access_token); client.SetAuthorizedUser(); if (client.User != null) { gitlabUser = new JObject(); gitlabUser["login"] = client.User.Login; gitlabUser["email"] = client.User.Email; } } return(HttpResponse.Item("integrations", new JObject() { ["github"] = new JObject() { ["connected"] = githubUser != null, ["user"] = githubUser }, ["gitlab"] = new JObject() { ["connected"] = gitlabUser != null, ["user"] = gitlabUser } })); }); }
public GitlabAuthController() { var clientId = AppConfig.GetConfiguration("auth:external:gitlab:client_id"); var redirectUri = AppConfig.GetConfiguration("auth:external:gitlab:redirect_url"); Get("/api/v1/auth/gitlab/login_link/get", _ => { var loginLink = $"https://gitlab.com/oauth/authorize?client_id={clientId}&redirect_uri={redirectUri}" + $"&response_type=token&scope={Scopes}"; return(HttpResponse.Data(new JObject() { ["login_link"] = loginLink })); }); Get("/api/v1/auth/gitlab/get_auth_token", av => { var errors = ValidationProcessor.Process(Request, new IValidatorRule[] { new ShouldHaveParameters(new[] { "access_token" }), }); if (errors.Count > 0) { return(HttpResponse.Errors(errors)); } var accessToken = GetRequestStr("access_token"); var client = new GitLabClient(accessToken); client.SetAuthorizedUser(); if (client.User == null) { return(HttpResponse.Error(HttpStatusCode.Unauthorized, "We're unable to get your access token, please try again")); } var user = UserRepository.FindByEmail(client.User.Email) ?? UserRepository.FindOrCreateByEmailAndLogin( client.User.Email, client.User.Login, null, UserRepository.FindByGuid(GetRequestStr("referral_key")) ); ServiceAccessTokenRepository.FindOrUpdateAccessToken(user, accessToken, ServiceType.GitLab); return(HttpResponse.Data(new JObject() { ["token"] = Jwt.FromUserId(user.id) })); }); }
public static (Project project, Repo repo) ImportProject(User me, string originId) { var tokenModel = me.ServiceAccessToken(ServiceType.GitLab); var client = new GitLabClient(tokenModel.access_token); client.SetAuthorizedUser(); if (tokenModel.origin_user_id == "") { GitLabUserUtils.UpdateOriginUserId(me); } var gitLabProject = GitlabApi.GetPublicProject(originId); if (gitLabProject == null) { return(null, null); } Repo repository = RepoRepository.CreateAndGet( me, gitLabProject.Value <string>("name"), gitLabProject.Value <string>("web_url"), RepoServiceType.GitLab, gitLabProject.Value <string>("id") ); var originUserId = tokenModel.origin_user_id; User creator = null; var projectUsers = GitlabApi.GetProjectUsers(originId); foreach (var projectUser in projectUsers.Children()) { if (originUserId == projectUser.Value <string>("id")) { creator = me; break; } } var project = ProjectRepository.FindOrCreate(repository.title, creator, repository); project.UpdateCol("description", gitLabProject.Value <string>("description")); return(project, repository); }
public static ExternalRepo[] GetUserRepositories(User user) { var result = new ExternalRepo[] { }; var token = user.ServiceAccessToken(ServiceType.GitLab); if (token == null) { return(result); } var client = new GitLabClient(token.access_token); client.SetAuthorizedUser(); return(client.GetMyPublicRepositories(user)); }
public static (bool finished, string originUserId) UpdateOriginUserId(User me) { var serviceAccessToken = me.ServiceAccessToken(ServiceType.GitLab); if (serviceAccessToken == null) { return(false, ""); } var client = new GitLabClient(serviceAccessToken.access_token); client.SetAuthorizedUser(); var originUserId = client.User.Id.ToString(); serviceAccessToken.UpdateCol("origin_user_id", originUserId); return(true, originUserId); }