diff --git a/src/Ombi/ClientApp/src/app/settings/authentication/authentication.component.scss b/src/Ombi/ClientApp/src/app/settings/authentication/authentication.component.scss
index 4156e205a..0780a0bc0 100644
--- a/src/Ombi/ClientApp/src/app/settings/authentication/authentication.component.scss
+++ b/src/Ombi/ClientApp/src/app/settings/authentication/authentication.component.scss
@@ -12,4 +12,11 @@
::ng-deep .dark .btn:hover {
box-shadow: 0 5px 11px 0 rgba(255, 255, 255, 0.18), 0 4px 15px 0 rgba(255, 255, 255, 0.15);
color: inherit;
-}
\ No newline at end of file
+}
+
+.warning-box {
+ margin: 16px 0;
+ color: white;
+ background-color: $ombi-background-accent;
+ border-color: $warn;
+}
diff --git a/src/Ombi/ClientApp/src/app/settings/authentication/authentication.component.ts b/src/Ombi/ClientApp/src/app/settings/authentication/authentication.component.ts
index 80135b195..0620ea97f 100644
--- a/src/Ombi/ClientApp/src/app/settings/authentication/authentication.component.ts
+++ b/src/Ombi/ClientApp/src/app/settings/authentication/authentication.component.ts
@@ -28,6 +28,7 @@ export class AuthenticationComponent implements OnInit {
enableOAuth: [x.enableOAuth],
enableHeaderAuth: [x.enableHeaderAuth],
headerAuthVariable: [x.headerAuthVariable],
+ headerAuthCreateUser: [x.headerAuthCreateUser],
});
this.form.controls.enableHeaderAuth.valueChanges.subscribe(x => {
if (x) {
diff --git a/src/Ombi/Controllers/V1/TokenController.cs b/src/Ombi/Controllers/V1/TokenController.cs
index 657c95f91..7744a3928 100644
--- a/src/Ombi/Controllers/V1/TokenController.cs
+++ b/src/Ombi/Controllers/V1/TokenController.cs
@@ -36,13 +36,15 @@ namespace Ombi.Controllers.V1
public class TokenController : ControllerBase
{
public TokenController(OmbiUserManager um, ITokenRepository token,
- IPlexOAuthManager oAuthManager, ILogger
logger, ISettingsService auth)
+ IPlexOAuthManager oAuthManager, ILogger logger, ISettingsService auth,
+ ISettingsService userManagement)
{
_userManager = um;
_token = token;
_plexOAuthManager = oAuthManager;
_log = logger;
_authSettings = auth;
+ _userManagementSettings = userManagement;
}
private readonly ITokenRepository _token;
@@ -50,6 +52,7 @@ namespace Ombi.Controllers.V1
private readonly IPlexOAuthManager _plexOAuthManager;
private readonly ILogger _log;
private readonly ISettingsService _authSettings;
+ private readonly ISettingsService _userManagementSettings;
///
/// Gets the token.
@@ -305,7 +308,28 @@ namespace Ombi.Controllers.V1
var user = await _userManager.FindByNameAsync(username);
if (user == null)
{
- return new UnauthorizedResult();
+ if (authSettings.HeaderAuthCreateUser)
+ {
+ var defaultSettings = await _userManagementSettings.GetSettingsAsync();
+ user = new OmbiUser {
+ UserName = username,
+ UserType = UserType.LocalUser,
+ StreamingCountry = defaultSettings.DefaultStreamingCountry ?? "US",
+ MovieRequestLimit = defaultSettings.MovieRequestLimit,
+ MovieRequestLimitType = defaultSettings.MovieRequestLimitType,
+ EpisodeRequestLimit = defaultSettings.EpisodeRequestLimit,
+ EpisodeRequestLimitType = defaultSettings.EpisodeRequestLimitType,
+ MusicRequestLimit = defaultSettings.MusicRequestLimit,
+ MusicRequestLimitType = defaultSettings.MusicRequestLimitType,
+ };
+
+ await _userManager.CreateAsync(user);
+ await _userManager.AddToRolesAsync(user, defaultSettings.DefaultRoles);
+ }
+ else
+ {
+ return new UnauthorizedResult();
+ }
}
return await CreateToken(true, user);