==============API call==============
public void LogoutDiscourse()
{
string apiKey = ConfigurationManager.AppSettings["discourse_api_key"];
string apiUsername = ConfigurationManager.AppSettings["discourse_api_username"];
string url = "https://xxxxxxx.trydiscourse.com/admin/users/" + userId + "/log_out?api_key=" + apiKey + "&api_username=" + apiUsername;
string response = CalloutDiscourseApi(url);
}
public string CalloutDiscourseApi(string apiUrl)
{
//HttpWebResponse response = null;
StreamReader respStream = null;
// Create a request object using the url passed in
var request = (HttpWebRequest)WebRequest.Create(apiUrl);
request.Method = "POST";
request.Timeout = 10000;
//Set the content type of the data being posted.
request.ContentType = "multipart/form-data";
using (var response = (HttpWebResponse)request.GetResponse())
{
// Create a streamreader object from the response
respStream = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
// Get the contents of the page as a string and return it
return respStream.ReadToEnd();
}
}
===========SSO - Group passing==========
////Skipping few initial line of code here
string userGroups = "CustomGroup";
var result = userRegistration.GetUserSpecificDetails(actualCriteria);
objUserProfileDetails = (List<UserProfileEditModel>)(serialization.DeSerializeBinary(Convert.ToString(result)));
var UserProfileDetails = objUserProfileDetails.FirstOrDefault();
string returnPayload = "nonce=" + Server.UrlEncode(nonce) +
"&email=" + Server.UrlEncode(UserProfileDetails.Email) +
"&external_id=" + Server.UrlEncode(UserProfileDetails.ID.ToString()) +
"&username=" + Server.UrlEncode(UserProfileDetails.Email) +
"&name=" + Server.UrlEncode(UserProfileDetails.Name) +
"&add_groups=" + Server.UrlEncode(userGroups);
string encodedPayload = Convert.ToBase64String(Encoding.UTF8.GetBytes(returnPayload));
string returnSig = getHash(encodedPayload, ssoSecret);
string redirectUrl = ConfigurationManager.AppSettings["DiscourseUrl"] + "/session/sso_login?sso=" + encodedPayload + "&sig=" + returnSig;
return Redirect(redirectUrl);