Categorygithub.com/Megaputer/go_oauth_phabricator
modulepackage
1.0.0
Repository: https://github.com/megaputer/go_oauth_phabricator.git
Documentation: pkg.go.dev

# README

go_oauth_phabricator

Client for OAuth2 Phabricator in Golang

Installation and Usage

Install

go get -v github.com/Megaputer/go_oauth_phabricator

Usage

package main

import (
	"fmt"
	"log"

	phabricator "github.com/Megaputer/go_oauth_phabricator"
)

var client *phabricator.Config

// initialize the client in the init () function
func init() {
	// Get oauthPHID and oauthSecret from
	// https://example.phabricator.com/oauthserver/query/all/
	oauthPHID := "OAuthPHID"
	oauthSecret := "OAuthSecret"

	// redirectURL is the URL to redirect users going through
	// the OAuth flow, after the resource owner's URLs.
	redirectURL := "https://my.com/auth"

	//phabricatorURL the url of the phabricator server
	// that is the source of OAuth
	phabricatorURL := "https://phabricator.example.com"

	client = phabricator.ClientConfig(oauthPHID, oauthSecret, redirectURL, phabricatorURL)
}

func main() {
	// AuthCodeURL return url from OAuth with CSRF token
	url := client.AuthCodeURL("CSRF token")
	fmt.Println(url)

	// code will be in the *http.Request.FormValue("code")
	// https://secure.phabricator.com/book/phabcontrib/article/using_oauthserver/
	code := ""

	user, err := client.Authenticate(code)
	if err != nil {
		log.Fatalln(err)
	}

	fmt.Println(user.UserName, user.RealName)
}

# Functions

ClientConfig сreates a pointer to the structure Config that is required to work with OAuth clientID is the application's PHID https://example.phabricator.com/oauthserver/query/all/ clientSecret is the application's secret.

# Structs

Config for OAuth.
User is the result of the function JSON looks like: { "phid": "PHID-USER-...", "userName": "...", "realName": "...", "image": phabricator_user_picture, "uri": phabricator_user_url, "roles": ["admin", "verified", "approved", "activated"], "primaryEmail": email }.