Added gravitar image

This commit is contained in:
Jamie.Rees 2017-02-28 16:09:26 +00:00
parent f6bf6493b2
commit 7d8848a69c
17 changed files with 137 additions and 25 deletions

View file

@ -8,5 +8,6 @@ namespace Ombi.Core.Users
IEnumerable<UserHelperModel> GetUsers(); IEnumerable<UserHelperModel> GetUsers();
IEnumerable<UserHelperModel> GetUsersWithPermission(Permissions permission); IEnumerable<UserHelperModel> GetUsersWithPermission(Permissions permission);
IEnumerable<UserHelperModel> GetUsersWithFeature(Features feature); IEnumerable<UserHelperModel> GetUsersWithFeature(Features feature);
UserHelperModel GetUser(string username);
} }
} }

View file

@ -51,6 +51,49 @@ namespace Ombi.Core.Users
private ISecurityExtensions Security { get; } private ISecurityExtensions Security { get; }
private IExternalUserRepository<EmbyUsers> EmbyUserRepository { get; } private IExternalUserRepository<EmbyUsers> EmbyUserRepository { get; }
public UserHelperModel GetUser(string username)
{
var localUsers = LocalUserRepository.GetUserByUsername(username);
if (localUsers != null)
{
var props = ByteConverterHelper.ReturnObject<UserProperties>(localUsers.UserProperties);
return new UserHelperModel
{
Type = UserType.LocalUser,
Username = localUsers.UserName,
UserAlias = props.UserAlias,
EmailAddress = props.EmailAddress,
Permissions = (Permissions) localUsers.Permissions
};
}
var plexUsers = PlexUserRepository.GetUserByUsername(username);
if (plexUsers != null)
{
return new UserHelperModel
{
Type = UserType.PlexUser,
Username = plexUsers.Username,
UserAlias = plexUsers.UserAlias,
EmailAddress = plexUsers.EmailAddress,
Permissions = (Permissions)plexUsers.Permissions
};
}
var embyUsers = EmbyUserRepository.GetUserByUsername(username);
if (embyUsers != null)
{
return new UserHelperModel
{
Type = UserType.EmbyUser,
Username = embyUsers.Username,
UserAlias = embyUsers.UserAlias,
EmailAddress = embyUsers.EmailAddress,
Permissions = (Permissions)embyUsers.Permissions
};
}
return null;
}
public IEnumerable<UserHelperModel> GetUsers() public IEnumerable<UserHelperModel> GetUsers()
{ {

View file

@ -544,3 +544,13 @@ label {
width: 100%; width: 100%;
height: 5px; } height: 5px; }
.navbar-brand {
float: left;
padding: 4.5px 15px;
font-size: 19px;
line-height: 21px;
height: 40px; }
.gravatar {
border-radius: 1em; }

File diff suppressed because one or more lines are too long

View file

@ -673,4 +673,16 @@ $border-radius: 10px;
right: 100%; right: 100%;
width: 100%; width: 100%;
height: 5px; height: 5px;
} }
.navbar-brand {
float: left;
padding: 4.5px 15px;
font-size: 19px;
line-height: 21px;
height: 40px;
}
.gravatar{
border-radius:1em;
}

View file

@ -29,10 +29,12 @@ using System;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Nancy; using Nancy;
using Nancy.Responses;
using NLog; using NLog;
using Ombi.Core; using Ombi.Core;
using Ombi.Core.SettingModels; using Ombi.Core.SettingModels;
using Ombi.Core.StatusChecker; using Ombi.Core.StatusChecker;
using Ombi.Core.Users;
using Ombi.Helpers; using Ombi.Helpers;
using Ombi.Services.Interfaces; using Ombi.Services.Interfaces;
using Ombi.Services.Jobs; using Ombi.Services.Jobs;
@ -43,14 +45,16 @@ namespace Ombi.UI.Modules
{ {
public class LayoutModule : BaseAuthModule public class LayoutModule : BaseAuthModule
{ {
public LayoutModule(ICacheProvider provider, ISettingsService<PlexRequestSettings> pr, ISettingsService<SystemSettings> settings, IJobRecord rec, ISecurityExtensions security) : base("layout", pr, security) public LayoutModule(ICacheProvider provider, ISettingsService<PlexRequestSettings> pr, ISettingsService<SystemSettings> settings, IJobRecord rec, ISecurityExtensions security, IUserHelper helper) : base("layout", pr, security)
{ {
Cache = provider; Cache = provider;
SystemSettings = settings; SystemSettings = settings;
Job = rec; Job = rec;
UserHelper = helper;
Get["/", true] = async (x,ct) => await CheckLatestVersion(); Get["/", true] = async (x,ct) => await CheckLatestVersion();
Get["/cacher", true] = async (x,ct) => await CacherRunning(); Get["/cacher", true] = async (x,ct) => await CacherRunning();
Get["/gravatar"] = x => GetGravatarImage();
} }
private ICacheProvider Cache { get; } private ICacheProvider Cache { get; }
@ -58,6 +62,7 @@ namespace Ombi.UI.Modules
private static Logger Log = LogManager.GetCurrentClassLogger(); private static Logger Log = LogManager.GetCurrentClassLogger();
private ISettingsService<SystemSettings> SystemSettings { get; } private ISettingsService<SystemSettings> SystemSettings { get; }
private IJobRecord Job { get; } private IJobRecord Job { get; }
private IUserHelper UserHelper { get; }
private async Task<Response> CheckLatestVersion() private async Task<Response> CheckLatestVersion()
{ {
@ -116,5 +121,24 @@ namespace Ombi.UI.Modules
return Response.AsJson(new { CurrentlyRunning = false, IsAdmin }); return Response.AsJson(new { CurrentlyRunning = false, IsAdmin });
} }
} }
private Response GetGravatarImage()
{
if (LoggedIn)
{
var user = UserHelper.GetUser(Username);
var hashed = StringHasher.CalcuateMd5Hash(user.EmailAddress);
return
Response.AsJson(new JsonResponseModel
{
Result = true,
Message = $"https://www.gravatar.com/avatar/{hashed}"
});
}
else
{
return Response.AsJson(new JsonResponseModel {Result = false});
}
}
} }
} }

View file

@ -266,13 +266,13 @@
<Compile Include="Modules\Admin\UserManagementSettingsModule.cs" /> <Compile Include="Modules\Admin\UserManagementSettingsModule.cs" />
<Compile Include="Modules\Admin\FaultQueueModule.cs" /> <Compile Include="Modules\Admin\FaultQueueModule.cs" />
<Compile Include="Modules\Admin\SystemStatusModule.cs" /> <Compile Include="Modules\Admin\SystemStatusModule.cs" />
<Compile Include="Modules\ApiDocsModule.cs" /> <Compile Include="Modules\Api\ApiDocsModule.cs" />
<Compile Include="Modules\ApiSettingsMetadataModule.cs" /> <Compile Include="Modules\Api\ApiSettingsMetadataModule.cs" />
<Compile Include="Modules\ApiUserMetadataModule.cs" /> <Compile Include="Modules\Api\ApiUserMetadataModule.cs" />
<Compile Include="Modules\ApiRequestMetadataModule.cs" /> <Compile Include="Modules\Api\ApiRequestMetadataModule.cs" />
<Compile Include="Modules\ApiSettingsModule.cs" /> <Compile Include="Modules\Api\ApiSettingsModule.cs" />
<Compile Include="Modules\ApiUserModule.cs" /> <Compile Include="Modules\Api\ApiUserModule.cs" />
<Compile Include="Modules\BaseApiModule.cs" /> <Compile Include="Modules\Api\BaseApiModule.cs" />
<Compile Include="Modules\BaseModule.cs" /> <Compile Include="Modules\BaseModule.cs" />
<Compile Include="Modules\BetaModule.cs" /> <Compile Include="Modules\BetaModule.cs" />
<Compile Include="Modules\CultureModule.cs" /> <Compile Include="Modules\CultureModule.cs" />
@ -641,7 +641,7 @@
<Content Include="Views\UserManagement\Index.cshtml"> <Content Include="Views\UserManagement\Index.cshtml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
<Compile Include="Modules\ApiRequestModule.cs" /> <Compile Include="Modules\Api\ApiRequestModule.cs" />
<Compile Include="Models\ApiModel.cs" /> <Compile Include="Models\ApiModel.cs" />
<Compile Include="Models\UserManagement\UserManagementUsersViewModel.cs" /> <Compile Include="Models\UserManagement\UserManagementUsersViewModel.cs" />
</ItemGroup> </ItemGroup>

View file

@ -26,6 +26,23 @@
console.log(e); console.log(e);
} }
}); });
var gravatarUrl = createBaseUrl(base, 'layout/gravatar');
$.ajax({
url: gravatarUrl,
success: function (result) {
if (result.result) {
$('#gravatarImg').html("<img src=\"" + result.message + "\" class=\"gravatar\" width=\"30\" height=\"30\" alt=\"\">");
}
},
error: function (xhr, status, error) {
console.log("error " + error);
}
});
// End Check for update // End Check for update
checkCacheInProgress(); checkCacheInProgress();

View file

@ -52,6 +52,9 @@
<li id="customDonate" style="display: none"><a id="customDonateHref" href="https://www.paypal.me/PlexRequestsNet" target="_blank"><i class="fa fa-heart" style="color: yellow;"></i> <span id="donationText">@UI.Custom_Donation_Default</span></a></li> <li id="customDonate" style="display: none"><a id="customDonateHref" href="https://www.paypal.me/PlexRequestsNet" target="_blank"><i class="fa fa-heart" style="color: yellow;"></i> <span id="donationText">@UI.Custom_Donation_Default</span></a></li>
</ul> </ul>
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
<a id="gravatarImg" class="navbar-brand" href="#">
</a>
@if (Html.IsAdmin()) @if (Html.IsAdmin())
{ {
<li><a>@UI.Layout_Welcome @Context.CurrentUser.UserName</a></li> <li><a>@UI.Layout_Welcome @Context.CurrentUser.UserName</a></li>
@ -101,19 +104,19 @@
<li class="dropdown"> <li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-language" aria-hidden="true"><span class="caret"></span></i></a> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-language" aria-hidden="true"><span class="caret"></span></i></a>
<ul class="dropdown-menu" role="menu"> <ul class="dropdown-menu" role="menu">
<li><a href="@url/culture?l=en&u=@Context.Request.Path">@UI.Layout_English</a></li> <li><a href="@url/culture?l=en&u=@Context.Request.Path">@UI.Layout_English</a></li>
<li><a href="@url/culture?l=fr&u=@Context.Request.Path">@UI.Layout_French</a></li> <li><a href="@url/culture?l=fr&u=@Context.Request.Path">@UI.Layout_French</a></li>
<li><a href="@url/culture?l=nl&u=@Context.Request.Path">@UI.Layout_Dutch</a></li> <li><a href="@url/culture?l=nl&u=@Context.Request.Path">@UI.Layout_Dutch</a></li>
<li><a href="@url/culture?l=es&u=@Context.Request.Path">@UI.Layout_Spanish</a></li> <li><a href="@url/culture?l=es&u=@Context.Request.Path">@UI.Layout_Spanish</a></li>
<li><a href="@url/culture?l=de&u=@Context.Request.Path">@UI.Layout_German</a></li> <li><a href="@url/culture?l=de&u=@Context.Request.Path">@UI.Layout_German</a></li>
<li><a href="@url/culture?l=da&u=@Context.Request.Path">@UI.Layout_Danish</a></li> <li><a href="@url/culture?l=da&u=@Context.Request.Path">@UI.Layout_Danish</a></li>
<li><a href="@url/culture?l=pt&u=@Context.Request.Path">@UI.Layout_Portuguese</a></li> <li><a href="@url/culture?l=pt&u=@Context.Request.Path">@UI.Layout_Portuguese</a></li>
<li><a href="@url/culture?l=sv&u=@Context.Request.Path">@UI.Layout_Swedish</a></li> <li><a href="@url/culture?l=sv&u=@Context.Request.Path">@UI.Layout_Swedish</a></li>
<li><a href="@url/culture?l=it&u=@Context.Request.Path">@UI.Layout_Italian</a></li> <li><a href="@url/culture?l=it&u=@Context.Request.Path">@UI.Layout_Italian</a></li>
</ul> </ul>
<li /> <li/>
</ul> </ul>
</div> </div>
</div> </div>
@ -129,7 +132,7 @@
var donationText = $("#donationText"); var donationText = $("#donationText");
donateLink.attr("href", result.url); donateLink.attr("href", result.url);
if (result.message) { if (result.message) {
donationText.text(result.message); donationText.text(result.message);
} }
} }
}, },
@ -138,6 +141,8 @@
$("#customDonate").hide(); $("#customDonate").hide();
} }
}); });
</script> </script>
<div id="updateAvailable" hidden="hidden"></div> <div id="updateAvailable" hidden="hidden"></div>