Merge pull request #1295 from tidusjar/dev

Some bug fixes around user management and small tweaks in the newsletter
pull/1300/head
Jamie 8 years ago committed by GitHub
commit 8937457890

@ -63,7 +63,9 @@ namespace Ombi.Core.Users
Username = localUsers.UserName, Username = localUsers.UserName,
UserAlias = props.UserAlias, UserAlias = props.UserAlias,
EmailAddress = props.EmailAddress, EmailAddress = props.EmailAddress,
Permissions = (Permissions) localUsers.Permissions Permissions = (Permissions) localUsers.Permissions,
UserId = localUsers.UserGuid,
Features = (Features)localUsers.Features
}; };
} }
@ -76,7 +78,10 @@ namespace Ombi.Core.Users
Username = plexUsers.Username, Username = plexUsers.Username,
UserAlias = plexUsers.UserAlias, UserAlias = plexUsers.UserAlias,
EmailAddress = plexUsers.EmailAddress, EmailAddress = plexUsers.EmailAddress,
Permissions = (Permissions)plexUsers.Permissions Permissions = (Permissions)plexUsers.Permissions,
UserId = plexUsers.PlexUserId,
Features = (Features)plexUsers.Features
}; };
} }
@ -89,7 +94,9 @@ namespace Ombi.Core.Users
Username = embyUsers.Username, Username = embyUsers.Username,
UserAlias = embyUsers.UserAlias, UserAlias = embyUsers.UserAlias,
EmailAddress = embyUsers.EmailAddress, EmailAddress = embyUsers.EmailAddress,
Permissions = (Permissions)embyUsers.Permissions Permissions = (Permissions)embyUsers.Permissions,
UserId = embyUsers.EmbyUserId,
Features = (Features)embyUsers.Features
}; };
} }
return null; return null;

@ -39,6 +39,7 @@ namespace Ombi.Core.Users
public Features Features { get; set; } public Features Features { get; set; }
public string EmailAddress { get; set; } public string EmailAddress { get; set; }
public UserType Type { get; set; } public UserType Type { get; set; }
public string UserId { get; set; }
[JsonIgnore] [JsonIgnore]
public string UsernameOrAlias => string.IsNullOrEmpty(UserAlias) ? Username : UserAlias; public string UsernameOrAlias => string.IsNullOrEmpty(UserAlias) ? Username : UserAlias;

@ -39,6 +39,7 @@ namespace Ombi.Services.Interfaces
/// <param name="model">The model.</param> /// <param name="model">The model.</param>
/// <returns></returns> /// <returns></returns>
Task Publish(NotificationModel model); Task Publish(NotificationModel model);
Task PublishTest(NotificationModel model, Settings settings, INotification type);
/// <summary> /// <summary>
/// Sends a notification to the user, this is usually for testing the settings. /// Sends a notification to the user, this is usually for testing the settings.
/// </summary> /// </summary>

@ -186,27 +186,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
continue; continue;
} }
//var ep = filteredEp.Where(x => x.ShowTitle == t.Title);
if (filteredEp.Any())
{
var episodeList = new List<PlexEpisodeMetadata>();
foreach (var ep in filteredEp)
{
var epInfo = Api.GetEpisodeMetaData(plexSettings.PlexAuthToken, plexSettings.FullUri,
ep.RatingKey);
episodeList.Add(epInfo);
}
info.Add(new PlexRecentlyAddedModel
{
Metadata = i,
Content = t,
EpisodeMetadata = episodeList
});
}
else
{
info.Add(new PlexRecentlyAddedModel info.Add(new PlexRecentlyAddedModel
{ {
Metadata = i, Metadata = i,
@ -214,7 +194,6 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
}); });
} }
} }
}
GenerateTvHtml(info, sb); GenerateTvHtml(info, sb);
newsletter.TvCount = info.Count; newsletter.TvCount = info.Count;

@ -138,7 +138,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
if (embySettings.Enable) if (embySettings.Enable)
{ {
var letter = EmbyNewsletter.GetNewsletter(testEmail) ?? new Newsletter(); var letter = EmbyNewsletter.GetNewsletter(testEmail) ?? new Newsletter();
if (letter.Send) if (letter.Send || testEmail)
{ {
SendNewsletter(newletterSettings, letter.Html, testEmail, "New Content On Emby!"); SendNewsletter(newletterSettings, letter.Html, testEmail, "New Content On Emby!");
} }
@ -153,7 +153,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
if (plexSettings.Enable) if (plexSettings.Enable)
{ {
var letter = PlexNewsletter.GetNewsletter(testEmail) ?? new Newsletter(); var letter = PlexNewsletter.GetNewsletter(testEmail) ?? new Newsletter();
if (letter.Send) if (letter.Send || testEmail)
{ {
SendNewsletter(newletterSettings, letter.Html, testEmail); SendNewsletter(newletterSettings, letter.Html, testEmail);
} }

@ -227,6 +227,7 @@ namespace Ombi.Services.Notification
catch (Exception e) catch (Exception e)
{ {
Log.Error(e); Log.Error(e);
throw new InvalidOperationException(e.Message);
} }
} }

@ -97,7 +97,13 @@ namespace Ombi.Services.Notification
catch (Exception ex) catch (Exception ex)
{ {
Log.Error(ex, $"Notification '{notification.NotificationName}' failed with exception"); Log.Error(ex, $"Notification '{notification.NotificationName}' failed with exception");
throw new InvalidOperationException(ex.Message);
} }
} }
public async Task PublishTest(NotificationModel model, Settings settings, INotification type)
{
await type.NotifyAsync(model, settings);
}
} }
} }

@ -76,7 +76,7 @@
</td> </td>
<td ng-hide="hideColumns"> <td ng-hide="hideColumns">
<span ng-if="u.type === 1">Local User</span> <span ng-if="u.type === 1">Local User</span>
<span ng-if="u.type === 3">Plex User</span> <span ng-if="u.type === 0">Plex User</span>
<span ng-if="u.type === 2">Emby User</span> <span ng-if="u.type === 2">Emby User</span>
</td> </td>
<td ng-hide="hideColumns" ng-bind="u.lastLoggedIn === minDate ? 'Never' : formatDate(u.lastLoggedIn)"></td> <td ng-hide="hideColumns" ng-bind="u.lastLoggedIn === minDate ? 'Never' : formatDate(u.lastLoggedIn)"></td>

@ -639,12 +639,14 @@ namespace Ombi.UI.Modules.Admin
{ {
NotificationService.Subscribe(new EmailMessageNotification(EmailService)); NotificationService.Subscribe(new EmailMessageNotification(EmailService));
settings.Enabled = true; settings.Enabled = true;
await NotificationService.Publish(notificationModel, settings); await NotificationService.PublishTest(notificationModel, settings, new EmailMessageNotification(EmailService));
Log.Info("Sent email notification test"); Log.Info("Sent email notification test");
} }
catch (Exception) catch (Exception ex)
{ {
Log.Error("Failed to subscribe and publish test Email Notification"); Log.Error("Failed to subscribe and publish test Email Notification");
var msg = "Failed: " + ex.Message;
return Response.AsJson(new JsonResponseModel { Result = false, Message = msg });
} }
finally finally
{ {
@ -653,7 +655,9 @@ namespace Ombi.UI.Modules.Admin
NotificationService.UnSubscribe(new EmailMessageNotification(EmailService)); NotificationService.UnSubscribe(new EmailMessageNotification(EmailService));
} }
} }
return Response.AsJson(new JsonResponseModel { Result = true, Message = "Successfully sent a test Email Notification!" }); return Response.AsJson(new JsonResponseModel { Result = true, Message = "Successfully sent a test Email Notification!" });
} }
private Response SaveEmailNotifications() private Response SaveEmailNotifications()
@ -739,7 +743,7 @@ namespace Ombi.UI.Modules.Admin
{ {
NotificationService.Subscribe(new PushbulletNotification(PushbulletApi, PushbulletService)); NotificationService.Subscribe(new PushbulletNotification(PushbulletApi, PushbulletService));
settings.Enabled = true; settings.Enabled = true;
await NotificationService.Publish(notificationModel, settings); await NotificationService.PublishTest(notificationModel, settings, new PushbulletNotification(PushbulletApi, PushbulletService));
Log.Info("Sent pushbullet notification test"); Log.Info("Sent pushbullet notification test");
} }
catch (Exception) catch (Exception)
@ -805,7 +809,7 @@ namespace Ombi.UI.Modules.Admin
{ {
NotificationService.Subscribe(new PushoverNotification(PushoverApi, PushoverService)); NotificationService.Subscribe(new PushoverNotification(PushoverApi, PushoverService));
settings.Enabled = true; settings.Enabled = true;
await NotificationService.Publish(notificationModel, settings); await NotificationService.PublishTest(notificationModel, settings, new PushoverNotification(PushoverApi, PushoverService));
Log.Info("Sent pushover notification test"); Log.Info("Sent pushover notification test");
} }
catch (Exception) catch (Exception)
@ -1000,7 +1004,7 @@ namespace Ombi.UI.Modules.Admin
{ {
NotificationService.Subscribe(new SlackNotification(SlackApi, SlackSettings)); NotificationService.Subscribe(new SlackNotification(SlackApi, SlackSettings));
settings.Enabled = true; settings.Enabled = true;
await NotificationService.Publish(notificationModel, settings); await NotificationService.PublishTest(notificationModel, settings, new SlackNotification(SlackApi, SlackSettings));
Log.Info("Sent slack notification test"); Log.Info("Sent slack notification test");
} }
catch (Exception e) catch (Exception e)
@ -1071,7 +1075,7 @@ namespace Ombi.UI.Modules.Admin
{ {
NotificationService.Subscribe(new DiscordNotification(DiscordApi, DiscordSettings)); NotificationService.Subscribe(new DiscordNotification(DiscordApi, DiscordSettings));
settings.Enabled = true; settings.Enabled = true;
await NotificationService.Publish(notificationModel, settings); await NotificationService.PublishTest(notificationModel, settings, new DiscordNotification(DiscordApi, DiscordSettings));
Log.Info("Sent Discord notification test"); Log.Info("Sent Discord notification test");
} }
catch (Exception e) catch (Exception e)
@ -1299,7 +1303,8 @@ namespace Ombi.UI.Modules.Admin
{ {
var settings = this.Bind<MassEmailSettings>(); var settings = this.Bind<MassEmailSettings>();
Log.Debug("Clicked Admin Mass Email Test"); Log.Debug("Clicked Admin Mass Email Test");
if (settings.Subject == null) { if (settings.Subject == null)
{
return Response.AsJson(new JsonResponseModel { Result = false, Message = "Please Set a Subject" }); return Response.AsJson(new JsonResponseModel { Result = false, Message = "Please Set a Subject" });
} }
if (settings.Body == null) if (settings.Body == null)

@ -122,8 +122,7 @@ namespace Ombi.UI.Modules.Admin
} }
catch (Exception e) catch (Exception e)
{ {
throw e;
throw;
} }
} }
} }

@ -59,7 +59,8 @@ namespace Ombi.UI.Modules
{ {
public UserLoginModule(ISettingsService<AuthenticationSettings> auth, IPlexApi api, ISettingsService<PlexSettings> plexSettings, ISettingsService<PlexRequestSettings> pr, public UserLoginModule(ISettingsService<AuthenticationSettings> auth, IPlexApi api, ISettingsService<PlexSettings> plexSettings, ISettingsService<PlexRequestSettings> pr,
ISettingsService<LandingPageSettings> lp, IAnalytics a, IResourceLinker linker, IRepository<UserLogins> userLogins, IExternalUserRepository<PlexUsers> plexUsers, ICustomUserMapper custom, ISettingsService<LandingPageSettings> lp, IAnalytics a, IResourceLinker linker, IRepository<UserLogins> userLogins, IExternalUserRepository<PlexUsers> plexUsers, ICustomUserMapper custom,
ISecurityExtensions security, ISettingsService<UserManagementSettings> userManagementSettings, IEmbyApi embyApi, ISettingsService<EmbySettings> emby, IExternalUserRepository<EmbyUsers> embyU) ISecurityExtensions security, ISettingsService<UserManagementSettings> userManagementSettings, IEmbyApi embyApi, ISettingsService<EmbySettings> emby, IExternalUserRepository<EmbyUsers> embyU,
IUserHelper userHelper)
: base("userlogin", pr, security) : base("userlogin", pr, security)
{ {
AuthService = auth; AuthService = auth;
@ -75,6 +76,7 @@ namespace Ombi.UI.Modules
EmbySettings = emby; EmbySettings = emby;
EmbyApi = embyApi; EmbyApi = embyApi;
EmbyUserRepository = embyU; EmbyUserRepository = embyU;
UserHelper = userHelper;
Post["/", true] = async (x, ct) => await LoginUser(); Post["/", true] = async (x, ct) => await LoginUser();
Get["/logout"] = x => Logout(); Get["/logout"] = x => Logout();
@ -135,6 +137,7 @@ namespace Ombi.UI.Modules
private IExternalUserRepository<EmbyUsers> EmbyUserRepository { get; } private IExternalUserRepository<EmbyUsers> EmbyUserRepository { get; }
private ICustomUserMapper CustomUserMapper { get; } private ICustomUserMapper CustomUserMapper { get; }
private ISettingsService<UserManagementSettings> UserManagementSettings { get; } private ISettingsService<UserManagementSettings> UserManagementSettings { get; }
private IUserHelper UserHelper { get; }
private static Logger Log = LogManager.GetCurrentClassLogger(); private static Logger Log = LogManager.GetCurrentClassLogger();
@ -683,6 +686,14 @@ namespace Ombi.UI.Modules
{ {
type = UserType.EmbyUser;; type = UserType.EmbyUser;;
} }
if (string.IsNullOrEmpty(userId))
{
// It's possible we have no auth enabled meaning the userId is empty
// Let's find that user!
var user = UserHelper.GetUser(username);
userId = user.UserId;
}
UserLogins.Insert(new UserLogins { UserId = userId, Type = type, LastLoggedIn = DateTime.UtcNow }); UserLogins.Insert(new UserLogins { UserId = userId, Type = type, LastLoggedIn = DateTime.UtcNow });
return m; return m;

Loading…
Cancel
Save