Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
Loading items

Target

Select target project
  • coscine/backend/libraries/action
1 result
Select Git revision
Loading items
Show changes
Commits on Source (5)
using Coscine.Action;
using Coscine.Action.EventArgs;
using Coscine.Configuration;
using Coscine.Database.ReturnObjects;
using NUnit.Framework;
using System;
namespace Action.Tests
{
class ContactChangeTest
{
//[Test]
//public void ContactChangingTest()
//{
// IConfiguration configuration = new ConsulConfiguration();
// var emitter = new Emitter(configuration);
// ContactChangeObject contactChangeObject = new ContactChangeObject(
// Guid.Parse("6B57E303-1237-4D8A-9D76-579879AB3F86"),
// Guid.Parse("1AE5A3CF-2977-4458-82A7-073321EBAFED"),
// "Hristov@itc.rwth-aachen.de",
// null,
// Guid.Parse("0F114774-6D34-4774-87D3-6AA3766677EC"));
// ContactChangeEventArgs contactChangeEventArgs = new ContactChangeEventArgs(configuration)
// {
// ContactInformation = contactChangeObject
// };
// emitter.EmitContactChange(contactChangeEventArgs);
//}
}
}
......@@ -4,7 +4,7 @@
<RootNamespace>Coscine.Action</RootNamespace>
<AssemblyName>Coscine.Action</AssemblyName>
<TargetFramework>net5.0</TargetFramework>
<Version>2.0.0</Version>
<Version>2.1.0</Version>
</PropertyGroup>
<PropertyGroup>
<Authors>RWTH Aachen University</Authors>
......
......@@ -15,6 +15,7 @@ namespace Coscine.Action
private readonly List<IResourceAction> resourceActions = new List<IResourceAction>();
private readonly List<IPIDAction> pidActions = new List<IPIDAction>();
private readonly List<IAdminAction> adminActions = new List<IAdminAction>();
private readonly List<IContactChangeAction> contactChangeActions = new List<IContactChangeAction>();
public IConfiguration Configuration { get; }
......@@ -34,6 +35,9 @@ namespace Coscine.Action
var ua = InstantiateAllImplementations<IUserAction>(assembly);
userActions.AddRange(ua);
var ca = InstantiateAllImplementations<IContactChangeAction>(assembly);
contactChangeActions.AddRange(ca);
var ra = InstantiateAllImplementations<IResourceAction>(assembly);
resourceActions.AddRange(ra);
......@@ -86,6 +90,14 @@ namespace Coscine.Action
}
}
public void EmitContactChange(ContactChangeEventArgs args)
{
foreach (var a in contactChangeActions)
{
a.OnContactChange(args);
}
}
public void EmitResourceCreate(ResourceEventArgs args)
{
foreach (var a in resourceActions)
......
using Coscine.Configuration;
using Coscine.Database.DataModel;
using Coscine.Database.ReturnObjects;
using Newtonsoft.Json.Linq;
namespace Coscine.Action.EventArgs
{
public class ContactChangeEventArgs : ActionEventArgs
{
public IConfiguration Configuration { get; set; }
public ContactChangeObject ContactInformation { get; set; }
public ContactChangeEventArgs(IConfiguration configuration, object[] args) : base(args)
{
Configuration = configuration;
}
public ContactChangeEventArgs(IConfiguration configuration) : this(configuration, new object[0])
{
}
}
}
using Coscine.Action.EventArgs;
namespace Coscine.Action
{
public interface IContactChangeAction : IAction
{
void OnContactChange(ContactChangeEventArgs contactChangeEventArgs);
}
}
using Coscine.Action.EventArgs;
using Coscine.Action.Utils;
using Coscine.Database.Models;
using Newtonsoft.Json.Linq;
namespace Coscine.Action.Implementations.ContactChange
{
public class NotificationAction : IContactChangeAction
{
public int Priority { get { return 1; } }
public bool Enabled { get { return true; } }
public void OnContactChange(ContactChangeEventArgs contactChangeEventArgs)
{
if (!contactChangeEventArgs.SilentMode)
{
var baseURL = $"{contactChangeEventArgs.Configuration.GetStringAndWait("coscine/local/api/additional/url")}";
var completeURL = $"{baseURL}/coscine/apps/tokenconfirmation/?token={contactChangeEventArgs.ContactInformation.ConfirmationToken}";
var args = new JObject()
{
["Args"] = new JObject()
{
["placeholder"] = new JObject()
{
["confirmation_link"] = completeURL
}
}
};
var user = new UserModel().GetById(contactChangeEventArgs.ContactInformation.UserId);
user.EmailAddress = contactChangeEventArgs.ContactInformation.NewEmail;
string projectID = null;
string action = "user_email_changed";
NotificationBusUtil.SendAsync(contactChangeEventArgs.Configuration, action, NotificationBusUtil.GetUserList(user), projectID, args);
}
}
}
}