ロールメンバーの追加と削除(Web API)

Forguncyではロールにユーザーを追加するメソッド、およびロールからユーザーを削除するメソッドを提供しています。

Forguncy.addUserToRole(userName, roleName, successCallback, errorCallback)

ロールを指定してユーザーを追加します。ユーザーはすでに存在しているユーザーである必要があります。フォーム認証のユーザーとWindows認証のユーザーのどちらのユーザーでも指定可能です。

パラメーター

userName

Type: String

ロールへ追加したいユーザーのユーザー名。

roleName

Type: String

追加したいロールの名称。

successCallback

Type: Function()

ロールへのユーザーの追加が成功したときに実行するコールバック関数を指定します。

errorCallback

Type: Function( String errorMessage )

ロールへのユーザーの追加が失敗したときに実行するコールバック関数を指定します。 引数にエラーメッセージが渡されます。

 

 サンプルコード

Forguncy.addUserToRole("user1", "マネージャー",
    function () {             // ロールへのユーザーの追加に成功した場合
        alert("ロールにユーザーが追加されました。");
    },
    function (errorMessage) {        // ロールへのユーザーの追加に失敗した場合
        alert(errorMessage);
    }
);

 

Forguncy.deleteUserFromRole(userName, roleName, successCallback, errorCallback)

ロールを指定してユーザーを削除します。ユーザーはすでに指定したロールのメンバーである必要があります。フォーム認証のユーザーとWindows認証のユーザーのどちらのユーザーでも指定可能です。

パラメーター

userName

Type: String

ロールから削除したいユーザーのユーザー名。

roleName

Type: String

ユーザーをロールから削除したい場合のそのロールの名称。

successCallback

Type: Function()

ロールからユーザーの削除が成功したときに実行するコールバック関数を指定します。

errorCallback

Type: Function( String errorMessage )

ロールからユーザーの削除が失敗したときに実行するコールバック関数を指定します。 引数にエラーメッセージが渡されます。

 

 サンプルコード

Forguncy.deleteUserFromRole("user1", "マネージャー"
    function () {             // ロールからユーザーの削除に成功した場合
        alert("ユーザーがロールから削除されました。");
    },
    function (errorMessage) {        // ロールからユーザーの削除に失敗した場合
        alert(errorMessage);
    }
);

 

JavaScript以外の言語の場合

HTTPリクエストを送信する方法であれば、どのようなプログラミング言語からもロールメンバーの追加と削除を行うことが可能です。以下はC#によるサンプルコードとなっており、C# 4.0およびJson.NET(Newtonsoft)が必要です。

class Program 
{ 
    static void Main(string[] args) 
    { 
        var forguncyUserOperator = new ForguncyUserOperator("http://localhost/Forguncy/", "Administrator", "123456"); 
         forguncyUserOperator.AddUserToRole("user2", "マネージャー"); 
        forguncyUserOperator.DeleteUserFromRole("user1", "マネージャー"); 
    } 
} 
  
class ForguncyUserOperator 
{ 
    string _baseUrl; 
    string _administratorName; 
    string _administratorPassword; 
    public ForguncyUserOperator(string baseUrl, string administratorName, string administratorPassword) 
    { 
        _baseUrl = baseUrl; 
        _administratorName = administratorName; 
        _administratorPassword = administratorPassword; 
    } 
    public void AddUserToRole(string userName, string roleName) 
    { 
        var requestUrl = "Account/AddUserToRole"; 
        var request = new 
        { 
            userName = userName, 
            roleName = roleName 
        }; 
        ExecuteAction(requestUrl, request); 
    } 
    public void DeleteUserFromRole(string userName, string roleName) 
    { 
        var requestUrl = "Account/DeleteUserFromRole"; 
        var request = new 
        { 
            userName = userName, 
            roleName = roleName 
        }; 
        ExecuteAction(requestUrl, request); 
    } 
    private void ExecuteAction(string requestUrl, object requestData) 
    { 
        var loginCookie = GetLoginCookie(); 
        HttpWebRequest rq = HttpWebRequest.Create(_baseUrl + requestUrl) as HttpWebRequest; 
        rq.CookieContainer = loginCookie; 
        rq.Method = WebRequestMethods.Http.Post; 
        rq.ContentType = "application/json"; 
        var requestStr = JsonConvert.SerializeObject(requestData); 
        var bytes = Encoding.UTF8.GetBytes(requestStr); 
        rq.ContentLength = bytes.Length; 
        var requestStream = rq.GetRequestStream(); 
        requestStream.Write(bytes, 0, bytes.Length); 
        var response = rq.GetResponse(); 
        var result = new StreamReader(response.GetResponseStream()).ReadToEnd(); 
        var apiResult = JsonConvert.DeserializeObject<ApiResult>(result); 
        if (apiResult.Result == false) 
        { 
            throw new Exception(apiResult.Message); 
        } 
    } 
    CookieContainer GetLoginCookie() 
    { 
        var login = _baseUrl + "Account/Login"; 
        HttpWebRequest rq = HttpWebRequest.Create(login) as HttpWebRequest; 
        rq.CookieContainer = new CookieContainer(); 
        rq.Method = WebRequestMethods.Http.Post; 
        rq.Accept = "application/json"; 
        rq.ContentType = "application/json"; 
        var loginStr = "{userName:\"" + _administratorName + "\", password:\"" + _administratorPassword + "\",rememberMe:true }"; 
        var data = Encoding.UTF8.GetBytes(loginStr); 
        using (Stream stream = rq.GetRequestStream()) 
        { 
            stream.Write(data, 0, data.Length); 
        } 
        var response = rq.GetResponse(); 
        return rq.CookieContainer; 
    } 
    class ApiResult 
    { 
        public bool Result { get; set; } 
        public string Message { get; set; } 
    } 
}