2015-11-08 71 views
3

我試圖從使用Redmine .NET API的ASP.NET MVC應用程序管理Redmine。通過Redmine .NET API設置新問題的作者

MVC應用程序需要允許用戶從其UI創建和編輯Issue。 (MVC應用程序與Redmine具有相同的用戶。)以下代碼添加了一個新問題,但作者始終設置爲API密鑰的所有者。

using Redmine.Net.Api; 
using Redmine.Net.Api.Types; 

RedmineManager manager = new RedmineManager(host, apiKey); 

Issue newIssue = new Issue(); 
// Set issue details 
newIssue.Author = new IdentifiableName(); 
var user = manager.GetUsers(UserStatus.STATUS_ACTIVE, loginUserName).FirstOrDefault(); 
newIssue.Author.Id = user.Id; 

manager.CreateObject<Issue>(newIssue); 

我想將登錄用戶設置爲問題作者。
有誰知道如何做到這一點?
謝謝。

回答

3

Redmine不允許設置問題的作者字段。它始終設置爲當前用戶創建問題。

最簡單的解決方案是使用作者的憑據來創建API的問題(即他們的用戶名/密碼或他們的API密鑰)。

如果這是不可能的,你可以使用Redmine的User impersonation功能。這使您可以使用管理員的API令牌來處理您的所有請求。通過將X-Redmine-Switch-User標頭設置爲您的POST請求中另一個用戶的登錄名,您可以將該問題作爲另一個用戶創建。

雖然我沒有.NET客戶端庫的使用經驗,但他們似乎支持此功能,因爲它在自述文件中提到。您似乎可以使用RedmineManager classImpersonateUser property來設置登錄。

+0

謝謝,這個工程。 – jhmt

1

感謝@Holger Just的回答,我明白了。

我必須設置作者用戶的LoginRedmineManager.ImpersonateUser之前添加一個新問題。

var user = manager.GetUsers(UserStatus.STATUS_ACTIVE, loginUserName).FirstOrDefault(); 
manager.ImpersonateUser = user.Login; 

manager.CreateObject<Issue>(newIssue); 

這個工作很好,筆者已經正確地改爲冒充用戶。

在此之後,我必須設置nullRedmineManager.ImpersonateUser重置它。