consolidate user creation
This commit is contained in:
parent
50a44c9416
commit
79f427e10a
|
@ -90,9 +90,10 @@ else
|
||||||
{
|
{
|
||||||
SiteId = PageState.Site.SiteId,
|
SiteId = PageState.Site.SiteId,
|
||||||
Username = _username,
|
Username = _username,
|
||||||
DisplayName = (_displayname == string.Empty ? _username : _displayname),
|
Password = _password,
|
||||||
Email = _email,
|
Email = _email,
|
||||||
Password = _password
|
DisplayName = (_displayname == string.Empty ? _username : _displayname),
|
||||||
|
PhotoFileId = null
|
||||||
};
|
};
|
||||||
user = await UserService.AddUserAsync(user);
|
user = await UserService.AddUserAsync(user);
|
||||||
|
|
||||||
|
|
|
@ -162,6 +162,7 @@ namespace Oqtane.Controllers
|
||||||
|
|
||||||
if (allowregistration)
|
if (allowregistration)
|
||||||
{
|
{
|
||||||
|
bool succeeded;
|
||||||
IdentityUser identityuser = await _identityUserManager.FindByNameAsync(user.Username);
|
IdentityUser identityuser = await _identityUserManager.FindByNameAsync(user.Username);
|
||||||
if (identityuser == null)
|
if (identityuser == null)
|
||||||
{
|
{
|
||||||
|
@ -170,74 +171,48 @@ namespace Oqtane.Controllers
|
||||||
identityuser.Email = user.Email;
|
identityuser.Email = user.Email;
|
||||||
identityuser.EmailConfirmed = verified;
|
identityuser.EmailConfirmed = verified;
|
||||||
var result = await _identityUserManager.CreateAsync(identityuser, user.Password);
|
var result = await _identityUserManager.CreateAsync(identityuser, user.Password);
|
||||||
if (result.Succeeded)
|
succeeded = result.Succeeded;
|
||||||
{
|
|
||||||
user.LastLoginOn = null;
|
|
||||||
user.LastIPAddress = "";
|
|
||||||
newUser = _users.AddUser(user);
|
|
||||||
if (!verified)
|
|
||||||
{
|
|
||||||
string token = await _identityUserManager.GenerateEmailConfirmationTokenAsync(identityuser);
|
|
||||||
string url = HttpContext.Request.Scheme + "://" + _tenantManager.GetAlias().Name + "/login?name=" + user.Username + "&token=" + WebUtility.UrlEncode(token);
|
|
||||||
string body = "Dear " + user.DisplayName + ",\n\nIn Order To Complete The Registration Of Your User Account Please Click The Link Displayed Below:\n\n" + url + "\n\nThank You!";
|
|
||||||
var notification = new Notification(user.SiteId, newUser, "User Account Verification", body);
|
|
||||||
_notifications.AddNotification(notification);
|
|
||||||
}
|
|
||||||
|
|
||||||
// add folder for user
|
|
||||||
Folder folder = _folders.GetFolder(user.SiteId, Utilities.PathCombine("Users",Path.DirectorySeparatorChar.ToString()));
|
|
||||||
if (folder != null)
|
|
||||||
{
|
|
||||||
_folders.AddFolder(new Folder
|
|
||||||
{
|
|
||||||
SiteId = folder.SiteId,
|
|
||||||
ParentId = folder.FolderId,
|
|
||||||
Name = "My Folder",
|
|
||||||
Type = FolderTypes.Private,
|
|
||||||
Path = Utilities.PathCombine(folder.Path, newUser.UserId.ToString(), Path.DirectorySeparatorChar.ToString()),
|
|
||||||
Order = 1,
|
|
||||||
ImageSizes = "",
|
|
||||||
Capacity = Constants.UserFolderCapacity,
|
|
||||||
IsSystem = true,
|
|
||||||
Permissions = new List<Permission>
|
|
||||||
{
|
|
||||||
new Permission(PermissionNames.Browse, newUser.UserId, true),
|
|
||||||
new Permission(PermissionNames.View, RoleNames.Everyone, true),
|
|
||||||
new Permission(PermissionNames.Edit, newUser.UserId, true)
|
|
||||||
}.EncodePermissions()
|
|
||||||
}) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var result = await _identitySignInManager.CheckPasswordSignInAsync(identityuser, user.Password, false);
|
var result = await _identitySignInManager.CheckPasswordSignInAsync(identityuser, user.Password, false);
|
||||||
if (result.Succeeded)
|
succeeded = result.Succeeded;
|
||||||
{
|
verified = true;
|
||||||
newUser = _users.GetUser(user.Username);
|
}
|
||||||
}
|
|
||||||
|
if (succeeded)
|
||||||
|
{
|
||||||
|
user.LastLoginOn = null;
|
||||||
|
user.LastIPAddress = "";
|
||||||
|
newUser = _users.AddUser(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newUser != null)
|
if (newUser != null)
|
||||||
{
|
{
|
||||||
// add auto assigned roles to user for site
|
if (!verified)
|
||||||
List<Role> roles = _roles.GetRoles(user.SiteId).Where(item => item.IsAutoAssigned).ToList();
|
|
||||||
foreach (Role role in roles)
|
|
||||||
{
|
{
|
||||||
UserRole userrole = new UserRole();
|
string token = await _identityUserManager.GenerateEmailConfirmationTokenAsync(identityuser);
|
||||||
userrole.UserId = newUser.UserId;
|
string url = HttpContext.Request.Scheme + "://" + _tenantManager.GetAlias().Name + "/login?name=" + user.Username + "&token=" + WebUtility.UrlEncode(token);
|
||||||
userrole.RoleId = role.RoleId;
|
string body = "Dear " + user.DisplayName + ",\n\nIn Order To Complete The Registration Of Your User Account Please Click The Link Displayed Below:\n\n" + url + "\n\nThank You!";
|
||||||
userrole.EffectiveDate = null;
|
var notification = new Notification(user.SiteId, newUser, "User Account Verification", body);
|
||||||
userrole.ExpiryDate = null;
|
_notifications.AddNotification(notification);
|
||||||
_userRoles.AddUserRole(userrole);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string url = HttpContext.Request.Scheme + "://" + _tenantManager.GetAlias().Name;
|
||||||
|
string body = "Dear " + user.DisplayName + ",\n\nA User Account Has Been Succesfully Created For You. Please Use The Following Link To Access The Site:\n\n" + url + "\n\nThank You!";
|
||||||
|
var notification = new Notification(user.SiteId, newUser, "User Account Notification", body);
|
||||||
|
_notifications.AddNotification(notification);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (newUser != null)
|
|
||||||
{
|
|
||||||
newUser.Password = ""; // remove sensitive information
|
newUser.Password = ""; // remove sensitive information
|
||||||
_logger.Log(user.SiteId, LogLevel.Information, this, LogFunction.Create, "User Added {User}", newUser);
|
_logger.Log(user.SiteId, LogLevel.Information, this, LogFunction.Create, "User Added {User}", newUser);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
user.Password = ""; // remove sensitive information
|
||||||
|
_logger.Log(user.SiteId, LogLevel.Error, this, LogFunction.Create, "Unable To Add User {User}", user);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -73,13 +73,6 @@ namespace Oqtane.Controllers
|
||||||
var role = _roles.GetRole(userRole.RoleId);
|
var role = _roles.GetRole(userRole.RoleId);
|
||||||
if (ModelState.IsValid && role != null && SiteValid(role.SiteId) && RoleValid(role.Name))
|
if (ModelState.IsValid && role != null && SiteValid(role.SiteId) && RoleValid(role.Name))
|
||||||
{
|
{
|
||||||
if (role.Name == RoleNames.Host)
|
|
||||||
{
|
|
||||||
// host roles can only exist at global level - remove all site specific user roles
|
|
||||||
_userRoles.DeleteUserRoles(userRole.UserId);
|
|
||||||
_logger.Log(LogLevel.Information, this, LogFunction.Delete, "User Roles Deleted For UserId {UserId}", userRole.UserId);
|
|
||||||
}
|
|
||||||
|
|
||||||
userRole = _userRoles.AddUserRole(userRole);
|
userRole = _userRoles.AddUserRole(userRole);
|
||||||
_logger.Log(LogLevel.Information, this, LogFunction.Create, "User Role Added {UserRole}", userRole);
|
_logger.Log(LogLevel.Information, this, LogFunction.Create, "User Role Added {UserRole}", userRole);
|
||||||
|
|
||||||
|
|
|
@ -210,60 +210,43 @@ namespace Oqtane.Extensions
|
||||||
var result = await _identityUserManager.CreateAsync(identityuser, DateTime.UtcNow.ToString("yyyy-MMM-dd-HH-mm-ss"));
|
var result = await _identityUserManager.CreateAsync(identityuser, DateTime.UtcNow.ToString("yyyy-MMM-dd-HH-mm-ss"));
|
||||||
if (result.Succeeded)
|
if (result.Succeeded)
|
||||||
{
|
{
|
||||||
// add user login
|
user = new User
|
||||||
await _identityUserManager.AddLoginAsync(identityuser, new UserLoginInfo(providerType, providerKey, ""));
|
{
|
||||||
|
SiteId = alias.SiteId,
|
||||||
user = new User();
|
Username = email,
|
||||||
user.SiteId = alias.SiteId;
|
DisplayName = email,
|
||||||
user.Username = email;
|
Email = email,
|
||||||
user.DisplayName = email;
|
LastLoginOn = null,
|
||||||
user.Email = email;
|
LastIPAddress = ""
|
||||||
user.LastLoginOn = null;
|
};
|
||||||
user.LastIPAddress = "";
|
|
||||||
user = _users.AddUser(user);
|
user = _users.AddUser(user);
|
||||||
|
|
||||||
// add folder for user
|
if (user != null)
|
||||||
var _folders = httpContext.RequestServices.GetRequiredService<IFolderRepository>();
|
|
||||||
Folder folder = _folders.GetFolder(user.SiteId, Utilities.PathCombine("Users", Path.DirectorySeparatorChar.ToString()));
|
|
||||||
if (folder != null)
|
|
||||||
{
|
{
|
||||||
_folders.AddFolder(new Folder
|
var _notifications = httpContext.RequestServices.GetRequiredService<INotificationRepository>();
|
||||||
{
|
string url = httpContext.Request.Scheme + "://" + alias.Name;
|
||||||
SiteId = folder.SiteId,
|
string body = "You Recently Used An External Account To Sign In To Our Site.\n\n" + url + "\n\nThank You!";
|
||||||
ParentId = folder.FolderId,
|
var notification = new Notification(user.SiteId, user, "User Account Notification", body);
|
||||||
Name = "My Folder",
|
_notifications.AddNotification(notification);
|
||||||
Type = FolderTypes.Private,
|
|
||||||
Path = Utilities.PathCombine(folder.Path, user.UserId.ToString(), Path.DirectorySeparatorChar.ToString()),
|
|
||||||
Order = 1,
|
|
||||||
ImageSizes = "",
|
|
||||||
Capacity = Constants.UserFolderCapacity,
|
|
||||||
IsSystem = true,
|
|
||||||
Permissions = new List<Permission>
|
|
||||||
{
|
|
||||||
new Permission(PermissionNames.Browse, user.UserId, true),
|
|
||||||
new Permission(PermissionNames.View, RoleNames.Everyone, true),
|
|
||||||
new Permission(PermissionNames.Edit, user.UserId, true)
|
|
||||||
}.EncodePermissions()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// add auto assigned roles to user for site
|
// add user login
|
||||||
var _roles = httpContext.RequestServices.GetRequiredService<IRoleRepository>();
|
await _identityUserManager.AddLoginAsync(identityuser, new UserLoginInfo(providerType, providerKey, ""));
|
||||||
List<Role> roles = _roles.GetRoles(user.SiteId).Where(item => item.IsAutoAssigned).ToList();
|
|
||||||
foreach (Role role in roles)
|
_logger.Log(user.SiteId, LogLevel.Information, "ExternalLogin", Enums.LogFunction.Create, "User Added {User}", user);
|
||||||
{
|
|
||||||
UserRole userrole = new UserRole();
|
|
||||||
userrole.UserId = user.UserId;
|
|
||||||
userrole.RoleId = role.RoleId;
|
|
||||||
userrole.EffectiveDate = null;
|
|
||||||
userrole.ExpiryDate = null;
|
|
||||||
_userRoles.AddUserRole(userrole);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_logger.Log(user.SiteId, LogLevel.Error, "ExternalLogin", Enums.LogFunction.Create, "Unable To Add User {Email}", email);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_logger.Log(user.SiteId, LogLevel.Error, "ExternalLogin", Enums.LogFunction.Create, "Unable To Add Identity User {Email} {Error}", email, result.Errors.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_logger.Log(LogLevel.Error, "ExternalLogin", Enums.LogFunction.Security, "Creation Of New Users Is Disabled. User With Email Address {Email} Will First Need To Be Registered On The Site.", email);
|
_logger.Log(LogLevel.Error, "ExternalLogin", Enums.LogFunction.Security, "Creation Of New Users Is Disabled For This Site. User With Email Address {Email} Will First Need To Be Registered On The Site.", email);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -287,24 +270,25 @@ namespace Oqtane.Extensions
|
||||||
// add user login
|
// add user login
|
||||||
await _identityUserManager.AddLoginAsync(identityuser, new UserLoginInfo(providerType, providerKey, ""));
|
await _identityUserManager.AddLoginAsync(identityuser, new UserLoginInfo(providerType, providerKey, ""));
|
||||||
user = _users.GetUser(identityuser.UserName);
|
user = _users.GetUser(identityuser.UserName);
|
||||||
|
_logger.Log(user.SiteId, LogLevel.Information, "ExternalLogin", Enums.LogFunction.Create, "External User Login Added For {Email} Using Provider {Provider}", email, providerType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// add claims to principal
|
// add claims to principal
|
||||||
if (user != null)
|
if (user != null)
|
||||||
{
|
{
|
||||||
// update user
|
|
||||||
user.LastLoginOn = DateTime.UtcNow;
|
|
||||||
user.LastIPAddress = httpContext.Connection.RemoteIpAddress.ToString();
|
|
||||||
_users.UpdateUser(user);
|
|
||||||
_logger.Log(LogLevel.Information, "ExternalLogin", Enums.LogFunction.Security, "User Login Successful For {Username} Using Provider {Provider}", user.Username, providerType);
|
|
||||||
|
|
||||||
// add Oqtane claims
|
// add Oqtane claims
|
||||||
var principal = (ClaimsIdentity)claimsPrincipal.Identity;
|
var principal = (ClaimsIdentity)claimsPrincipal.Identity;
|
||||||
UserSecurity.ResetClaimsIdentity(principal);
|
UserSecurity.ResetClaimsIdentity(principal);
|
||||||
List<UserRole> userroles = _userRoles.GetUserRoles(user.UserId, user.SiteId).ToList();
|
List<UserRole> userroles = _userRoles.GetUserRoles(user.UserId, user.SiteId).ToList();
|
||||||
var identity = UserSecurity.CreateClaimsIdentity(alias, user, userroles);
|
var identity = UserSecurity.CreateClaimsIdentity(alias, user, userroles);
|
||||||
principal.AddClaims(identity.Claims);
|
principal.AddClaims(identity.Claims);
|
||||||
|
|
||||||
|
// update user
|
||||||
|
user.LastLoginOn = DateTime.UtcNow;
|
||||||
|
user.LastIPAddress = httpContext.Connection.RemoteIpAddress.ToString();
|
||||||
|
_users.UpdateUser(user);
|
||||||
|
_logger.Log(LogLevel.Information, "ExternalLogin", Enums.LogFunction.Security, "External User Login Successful For {Username} Using Provider {Provider}", user.Username, providerType);
|
||||||
}
|
}
|
||||||
else // user not logged in
|
else // user not logged in
|
||||||
{
|
{
|
||||||
|
|
|
@ -620,35 +620,12 @@ namespace Oqtane.Infrastructure
|
||||||
LastIPAddress = "",
|
LastIPAddress = "",
|
||||||
LastLoginOn = null
|
LastLoginOn = null
|
||||||
};
|
};
|
||||||
|
|
||||||
user = users.AddUser(user);
|
user = users.AddUser(user);
|
||||||
|
|
||||||
|
// add host role
|
||||||
var hostRoleId = roles.GetRoles(user.SiteId, true).FirstOrDefault(item => item.Name == RoleNames.Host)?.RoleId ?? 0;
|
var hostRoleId = roles.GetRoles(user.SiteId, true).FirstOrDefault(item => item.Name == RoleNames.Host)?.RoleId ?? 0;
|
||||||
var userRole = new UserRole { UserId = user.UserId, RoleId = hostRoleId, EffectiveDate = null, ExpiryDate = null };
|
var userRole = new UserRole { UserId = user.UserId, RoleId = hostRoleId, EffectiveDate = null, ExpiryDate = null };
|
||||||
userRoles.AddUserRole(userRole);
|
userRoles.AddUserRole(userRole);
|
||||||
|
|
||||||
// add user folder
|
|
||||||
var folder = folders.GetFolder(user.SiteId, Utilities.PathCombine("Users", Path.DirectorySeparatorChar.ToString()));
|
|
||||||
if (folder != null)
|
|
||||||
{
|
|
||||||
folders.AddFolder(new Folder
|
|
||||||
{
|
|
||||||
SiteId = folder.SiteId,
|
|
||||||
ParentId = folder.FolderId,
|
|
||||||
Name = "My Folder",
|
|
||||||
Type = FolderTypes.Private,
|
|
||||||
Path = Utilities.PathCombine(folder.Path, user.UserId.ToString(), Path.DirectorySeparatorChar.ToString()),
|
|
||||||
Order = 1,
|
|
||||||
ImageSizes = "",
|
|
||||||
Capacity = Constants.UserFolderCapacity,
|
|
||||||
IsSystem = true,
|
|
||||||
Permissions = new List<Permission>
|
|
||||||
{
|
|
||||||
new Permission(PermissionNames.Browse, user.UserId, true),
|
|
||||||
new Permission(PermissionNames.View, RoleNames.Everyone, true),
|
|
||||||
new Permission(PermissionNames.Edit, user.UserId, true),
|
|
||||||
}.EncodePermissions(),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,26 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Oqtane.Extensions;
|
||||||
using Oqtane.Models;
|
using Oqtane.Models;
|
||||||
|
using Oqtane.Shared;
|
||||||
|
|
||||||
namespace Oqtane.Repository
|
namespace Oqtane.Repository
|
||||||
{
|
{
|
||||||
public class UserRepository : IUserRepository
|
public class UserRepository : IUserRepository
|
||||||
{
|
{
|
||||||
private TenantDBContext _db;
|
private TenantDBContext _db;
|
||||||
|
private readonly IFolderRepository _folders;
|
||||||
|
private readonly IRoleRepository _roles;
|
||||||
|
private readonly IUserRoleRepository _userroles;
|
||||||
|
|
||||||
public UserRepository(TenantDBContext context)
|
public UserRepository(TenantDBContext context, IFolderRepository folders, IRoleRepository roles, IUserRoleRepository userroles)
|
||||||
{
|
{
|
||||||
_db = context;
|
_db = context;
|
||||||
|
_folders = folders;
|
||||||
|
_roles = roles;
|
||||||
|
_userroles = userroles;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<User> GetUsers()
|
public IEnumerable<User> GetUsers()
|
||||||
|
@ -21,8 +30,52 @@ namespace Oqtane.Repository
|
||||||
|
|
||||||
public User AddUser(User user)
|
public User AddUser(User user)
|
||||||
{
|
{
|
||||||
_db.User.Add(user);
|
if (_db.User.AsNoTracking().FirstOrDefault(item => item.Username == user.Username) == null)
|
||||||
_db.SaveChanges();
|
{
|
||||||
|
_db.User.Add(user);
|
||||||
|
_db.SaveChanges();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
user = _db.User.AsNoTracking().First(item => item.Username == user.Username);
|
||||||
|
}
|
||||||
|
|
||||||
|
// add folder for user
|
||||||
|
Folder folder = _folders.GetFolder(user.SiteId, Utilities.PathCombine("Users", Path.DirectorySeparatorChar.ToString()));
|
||||||
|
if (folder != null)
|
||||||
|
{
|
||||||
|
_folders.AddFolder(new Folder
|
||||||
|
{
|
||||||
|
SiteId = folder.SiteId,
|
||||||
|
ParentId = folder.FolderId,
|
||||||
|
Name = "My Folder",
|
||||||
|
Type = FolderTypes.Private,
|
||||||
|
Path = Utilities.PathCombine(folder.Path, user.UserId.ToString(), Path.DirectorySeparatorChar.ToString()),
|
||||||
|
Order = 1,
|
||||||
|
ImageSizes = "",
|
||||||
|
Capacity = Constants.UserFolderCapacity,
|
||||||
|
IsSystem = true,
|
||||||
|
Permissions = new List<Permission>
|
||||||
|
{
|
||||||
|
new Permission(PermissionNames.Browse, user.UserId, true),
|
||||||
|
new Permission(PermissionNames.View, RoleNames.Everyone, true),
|
||||||
|
new Permission(PermissionNames.Edit, user.UserId, true)
|
||||||
|
}.EncodePermissions()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// add auto assigned roles to user for site
|
||||||
|
List<Role> roles = _roles.GetRoles(user.SiteId).Where(item => item.IsAutoAssigned).ToList();
|
||||||
|
foreach (Role role in roles)
|
||||||
|
{
|
||||||
|
UserRole userrole = new UserRole();
|
||||||
|
userrole.UserId = user.UserId;
|
||||||
|
userrole.RoleId = role.RoleId;
|
||||||
|
userrole.EffectiveDate = null;
|
||||||
|
userrole.ExpiryDate = null;
|
||||||
|
_userroles.AddUserRole(userrole);
|
||||||
|
}
|
||||||
|
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,16 +2,19 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Oqtane.Models;
|
using Oqtane.Models;
|
||||||
|
using Oqtane.Shared;
|
||||||
|
|
||||||
namespace Oqtane.Repository
|
namespace Oqtane.Repository
|
||||||
{
|
{
|
||||||
public class UserRoleRepository : IUserRoleRepository
|
public class UserRoleRepository : IUserRoleRepository
|
||||||
{
|
{
|
||||||
private TenantDBContext _db;
|
private TenantDBContext _db;
|
||||||
|
private readonly IRoleRepository _roles;
|
||||||
|
|
||||||
public UserRoleRepository(TenantDBContext context)
|
public UserRoleRepository(TenantDBContext context, IRoleRepository roles)
|
||||||
{
|
{
|
||||||
_db = context;
|
_db = context;
|
||||||
|
_roles = roles;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<UserRole> GetUserRoles(int siteId)
|
public IEnumerable<UserRole> GetUserRoles(int siteId)
|
||||||
|
@ -34,6 +37,14 @@ namespace Oqtane.Repository
|
||||||
{
|
{
|
||||||
_db.UserRole.Add(userRole);
|
_db.UserRole.Add(userRole);
|
||||||
_db.SaveChanges();
|
_db.SaveChanges();
|
||||||
|
|
||||||
|
// host roles can only exist at global level - remove any site specific user roles
|
||||||
|
var role = _roles.GetRole(userRole.RoleId);
|
||||||
|
if (role.Name == RoleNames.Host)
|
||||||
|
{
|
||||||
|
DeleteUserRoles(userRole.UserId);
|
||||||
|
}
|
||||||
|
|
||||||
return userRole;
|
return userRole;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user