通过Redmine .NET API设置新问题的作者

时间:2015-11-08 01:37:37

标签: c# redmine redmine-api

我正在尝试使用Redmine .NET API从ASP.NET MVC应用程序管理Redmine。

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);

我想将登录用户设置为问题作者。
有谁知道怎么做?
感谢。

2 个答案:

答案 0 :(得分:3)

Redmine不允许设置问题的作者字段。在创建问题时始终将其设置为当前用户。

最简单的解决方案是使用作者的凭据来创建API问题(即用户名/密码或API密钥)。

如果无法做到这一点,您可以使用Redmine的User impersonation功能。这允许您使用管理员的API令牌来处理所有请求。通过在X-Redmine-Switch-User请求中将POST标头设置为其他用户的登录信息,您可以将该问题创建为其他用户。

虽然我没有您的.NET客户端库的经验,但似乎他们支持此功能,因为它在自述文件中提到。您似乎可以使用RedmineManager class的{​​{3}}设置登录信息。

答案 1 :(得分:1)

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

我必须将作者用户constexpr设置为Login 之前添加新问题。

RedmineManager.ImpersonateUser

这很有效且作者已正确更改为模拟用户。

在此之后,我必须将var user = manager.GetUsers(UserStatus.STATUS_ACTIVE, loginUserName).FirstOrDefault(); manager.ImpersonateUser = user.Login; manager.CreateObject<Issue>(newIssue); 设置为null以重置它。