@@ -36,20 +36,23 @@ public class Token
36
36
public class TokenController : ControllerBase
37
37
{
38
38
public TokenController ( OmbiUserManager um , ITokenRepository token ,
39
- IPlexOAuthManager oAuthManager , ILogger < TokenController > logger , ISettingsService < AuthenticationSettings > auth )
39
+ IPlexOAuthManager oAuthManager , ILogger < TokenController > logger , ISettingsService < AuthenticationSettings > auth ,
40
+ ISettingsService < UserManagementSettings > userManagement )
40
41
{
41
42
_userManager = um ;
42
43
_token = token ;
43
44
_plexOAuthManager = oAuthManager ;
44
45
_log = logger ;
45
46
_authSettings = auth ;
47
+ _userManagementSettings = userManagement ;
46
48
}
47
49
48
50
private readonly ITokenRepository _token ;
49
51
private readonly OmbiUserManager _userManager ;
50
52
private readonly IPlexOAuthManager _plexOAuthManager ;
51
53
private readonly ILogger < TokenController > _log ;
52
54
private readonly ISettingsService < AuthenticationSettings > _authSettings ;
55
+ private readonly ISettingsService < UserManagementSettings > _userManagementSettings ;
53
56
54
57
/// <summary>
55
58
/// Gets the token.
@@ -305,7 +308,28 @@ public async Task<IActionResult> HeaderAuth()
305
308
var user = await _userManager . FindByNameAsync ( username ) ;
306
309
if ( user == null )
307
310
{
308
- return new UnauthorizedResult ( ) ;
311
+ if ( authSettings . HeaderAuthCreateUser )
312
+ {
313
+ var defaultSettings = await _userManagementSettings . GetSettingsAsync ( ) ;
314
+ user = new OmbiUser {
315
+ UserName = username ,
316
+ UserType = UserType . LocalUser ,
317
+ StreamingCountry = defaultSettings . DefaultStreamingCountry ?? "US" ,
318
+ MovieRequestLimit = defaultSettings . MovieRequestLimit ,
319
+ MovieRequestLimitType = defaultSettings . MovieRequestLimitType ,
320
+ EpisodeRequestLimit = defaultSettings . EpisodeRequestLimit ,
321
+ EpisodeRequestLimitType = defaultSettings . EpisodeRequestLimitType ,
322
+ MusicRequestLimit = defaultSettings . MusicRequestLimit ,
323
+ MusicRequestLimitType = defaultSettings . MusicRequestLimitType ,
324
+ } ;
325
+
326
+ await _userManager . CreateAsync ( user ) ;
327
+ await _userManager . AddToRolesAsync ( user , defaultSettings . DefaultRoles ) ;
328
+ }
329
+ else
330
+ {
331
+ return new UnauthorizedResult ( ) ;
332
+ }
309
333
}
310
334
311
335
return await CreateToken ( true , user ) ;
0 commit comments