コード例 #1
0
 public void ValidateUserPassword(TenantUser user)
 {
     if (user.Password.Length < 10)
     {
         throw new TenantException(ExceptionCode.PasswordLenghtIncorrect.CodeToString(), ExceptionCode.PasswordLenghtIncorrect, user.TenantUId, user.Password);
     }
 }
コード例 #2
0
        public async Task <IActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl = null)
        {
            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await _signInManager.GetExternalLoginInfoAsync();

                if (info == null)
                {
                    return(View("ExternalLoginFailure"));
                }
                var user = new TenantUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        await _signInManager.SignInAsync(user, isPersistent : false);

                        _logger.LogInformation(6, "User created an account using {Name} provider.", info.LoginProvider);
                        return(RedirectToLocal(returnUrl));
                    }
                }
                AddErrors(result);
            }

            ViewData["ReturnUrl"] = returnUrl;
            return(View(model));
        }
コード例 #3
0
        public string Create(TenantUser user, TenantSettings settings, string tenantCode)
        {
            var key          = Encoding.ASCII.GetBytes(settings.TokenSecret);
            var tokenHandler = new JwtSecurityTokenHandler();
            var claims       = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Sub, user.UserGuid.ToString()),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(JwtRegisteredClaimNames.Email, user.Email),
                new Claim(CustomClaims.Name, user.DisplayName),
                new Claim(CustomClaims.Avatar, user.ImageUrl),
                new Claim(CustomClaims.Tenant, tenantCode),
            };

            var roleClaims = GetRoleClaims(user);

            claims.AddRange(roleClaims);

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                SigningCredentials =
                    new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature),
                Expires = DateTime.Now.AddMinutes(settings.TokenExpirationInMinutes),
                Issuer  = _tokenConfiguration.Issuer,
            };
            var jwt = tokenHandler.CreateJwtSecurityToken(tokenDescriptor);

            jwt.Header.Add(JwtHeaderParameterNames.Kid, tenantCode);

            return(tokenHandler.WriteToken(jwt));
        }
コード例 #4
0
        public JsonRpcResponseData ChangePassword(TenantUser payload, ApiAuthorization authorization)
        {
            SetupAuth();
            IsValidRequest(authorization.AppId, authorization.ApiKey);
            var apiController = new ControllerService();

            try
            {
                var username = apiController.ChangePassword(payload);
                return(new JsonRpcResponseData
                {
                    Message = $"Password for {username} changed",
                    Status = JsonRpcResponseData.OK,
                    Data = new
                    {
                        Username = username,
                        payload.Password
                    }
                });
            }
            catch (System.Exception ex)
            {
                throw HandleException(ex);
            }
        }
コード例 #5
0
        public async Task AddAsync(TenantUser tenantUser, CancellationToken cancellationToken = default)
        {
            await toolShedContext.TenantUserSet
            .AddAsync(tenantUser);

            await toolShedContext.SaveChangesAsync(cancellationToken);
        }
コード例 #6
0
        public async Task <IActionResult> Login(string returnUrl = null)
        {
            // Clear the existing external cookie to ensure a clean login process
            await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);

            //Add default admin if its not there
            var tenant = _dbContext.Tenants.FirstOrDefault();

            if (_dbContext.Users.Count() == 0)
            {
                var user = new TenantUser {
                    Email = "*****@*****.**", UserName = "******", EmailConfirmed = true, NormalizedEmail = "*****@*****.**", TenantId = tenant.TenantId
                };
                var result = await _userManager.CreateAsync(user, "@dminL0cked!!");

                if (result.Succeeded)
                {
                    await _userManager.AddClaimAsync(user, new Claim("tenant_id", tenant.TenantId));

                    await _userManager.AddClaimAsync(user, new Claim("role", "CentralAdmin"));

                    await _userManager.AddToRoleAsync(user, "CentralAdmin");
                }
            }

            ViewData["ReturnUrl"] = returnUrl;

            return(View());
        }
コード例 #7
0
        public string CreateUser(TenantUser tenant)
        {
            var tenantNode = TenantHelper.GetCurrentTenantHome(ConnectorContext.ContentService, tenant.TenantUId.ToString());
            var group      = userGroupService.GetUserGroup(tenant.Group);

            userGroupService.CreateUser(tenant);
            return(tenant.AssignedUmbracoUserId.ToString());
        }
コード例 #8
0
 public CreateQuestionCmd(string title, string body, string tag, int tenantId, Guid userId, TenantUser tenantUser)
 {
     Title      = title;
     Body       = body;
     Tag        = tag;
     TenantId   = tenantId;
     UserId     = userId;
     TenantUser = tenantUser;
 }
コード例 #9
0
ファイル: Address.cs プロジェクト: yonglehou/TheBorg
 public Address(
     TenantUser tenantUser,
     TenantChannel tenantChannel,
     TenantKey tenantKey)
 {
     TenantUser    = tenantUser;
     TenantChannel = tenantChannel;
     TenantKey     = tenantKey;
 }
コード例 #10
0
        public void ValidateUser(TenantUser user)
        {
            var u = userService.GetByUsername(user.Username);

            if (user.Password.Length < 10)
            {
                throw new TenantException(ExceptionCode.PasswordLenghtIncorrect.CodeToString(), ExceptionCode.PasswordLenghtIncorrect, user.TenantUId, user.Password);
            }
        }
コード例 #11
0
        public async Task AddTenantAsync_Object()
        {
            var tenantUser = new TenantUser
            {
                TenantId = tenantId,
                UserId   = userId
            };

            await tenantUserRepository.AddAsync(tenantUser);
        }
コード例 #12
0
 public QuestPublished(string title, string body, string tag, int tenantId, Guid userId, TenantUser user, bool isPublished)
 {
     Title       = title;
     Body        = body;
     Tag         = tag;
     TenantId    = tenantId;
     UserId      = userId;
     User        = user;
     IsPublished = isPublished;
 }
コード例 #13
0
        public async Task DeleteTenantAsync(Guid tenantId, Guid userId, CancellationToken cancellationToken = default)
        {
            var tenantUser = new TenantUser
            {
                TenantId = tenantId,
                UserId   = userId
            };

            toolShedContext.Remove(tenantUser);
            await toolShedContext.SaveChangesAsync(cancellationToken);
        }
コード例 #14
0
        public async Task AddAsync(Guid tenantId, Guid userId, CancellationToken cancellationToken = default)
        {
            var tenantUser = new TenantUser
            {
                TenantId = tenantId,
                UserId   = userId
            };

            await toolShedContext.TenantUserSet
            .AddAsync(tenantUser);

            await toolShedContext.SaveChangesAsync(cancellationToken);
        }
コード例 #15
0
        public int RenameMediaHome(TenantData tenant, TenantUser tenantUser)
        {
            var home = TenantHelper.GetCurrentTenantHome(ConnectorContext.ContentService, tenant.TenantUId.ToString());

            if (home == null)
            {
                throw new TenantException(ExceptionCode.TenantNotFound.CodeToString(), ExceptionCode.TenantNotFound, tenant.TenantUId);
            }

            IMedia             mediaHome = null;
            IReadOnlyUserGroup group     = null;

            if (tenantUser != null)
            {
                var uService = ConnectorContext.UserService;
                var user     = uService.GetByUsername(tenantUser.Username);
                group     = user.Groups.ToList()[0];
                mediaHome = mediaService.GetById(group.StartMediaId.Value);
            }
            else
            {
                mediaHome = mediaService.GetByLevel(1).SingleOrDefault(x => x.Name.Contains(tenant.Name));
            }

            if (mediaHome == null)
            {
                string mediaId = group?.StartMediaId.Value.ToString() ?? tenant.Name;
                //string mediaId = group?.StartMediaId.Value.ToString() ?? tenant.BrandName;
                throw new TenantException(ExceptionCode.MediaNodeDoesNotExist.CodeToString(), ExceptionCode.MediaNodeDoesNotExist, tenant.TenantUId, mediaId);
            }

            try
            {
                if (!mediaHome.Name.Equals(tenant.Name))
                {
                    mediaHome.Name = tenant.Name;
                    //mediaHome.Name = tenant.BrandName;
                    mediaService.Save(mediaHome);
                    ConnectorContext.AuditService.Add(AuditType.Save, -1, mediaHome.Id, "Media Folder", $"Media home for {tenant.TenantUId} has been renamed");
                }

                return(mediaHome.Id);
            }
            catch (System.Exception ex)
            {
                logger.Error(typeof(HomeMediaNode), ex.Message);
                logger.Error(typeof(HomeMediaNode), ex.StackTrace);
                throw;
            }
        }
コード例 #16
0
        private async Task <ClaimsPrincipal> GetClaims(TenantUser user)
        {
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }

            var id = new ClaimsIdentity();

            id.AddClaim(new Claim(JwtClaimTypes.PreferredUserName, user.UserName));

            id.AddClaims(await _tenantUserManager.GetClaimsAsync(user));

            return(new ClaimsPrincipal(id));
        }
コード例 #17
0
ファイル: ProfileService.cs プロジェクト: koppa96/eschool
        public async Task GetProfileDataAsync(ProfileDataRequestContext context)
        {
            var userId = Guid.Parse(context.Subject.Claims.Single(x => x.Type == "sub").Value);
            var user   = await userManager.Users.Include(x => x.TenantUsers)
                         .ThenInclude(x => x.TenantUserRoles)
                         .Include(x => x.TenantUsers)
                         .ThenInclude(x => x.Tenant)
                         .Include(x => x.DefaultTenant)
                         .SingleAsync(x => x.Id == userId);

            var tenantId = context.ValidatedRequest.Raw.Get(Constants.ClaimTypes.TenantId);

            context.IssuedClaims.Add(new Claim(Constants.ClaimTypes.GlobalRole, user.GlobalRole.ToString()));

            if (user.GlobalRole == GlobalRoleType.TenantUser)
            {
                TenantUser tenantUser = null;

                if (string.IsNullOrEmpty(tenantId))
                {
                    if (user.DefaultTenantId.HasValue)
                    {
                        tenantUser = user.TenantUsers.Single(x => x.TenantId == user.DefaultTenantId.Value);
                    }
                    else if (user.TenantUsers.Any())
                    {
                        tenantUser = user.TenantUsers.First();
                    }

                    context.IssuedClaims.Add(new Claim(Constants.ClaimTypes.TenantId, tenantUser.TenantId.ToString()));
                    context.IssuedClaims.AddRange(tenantUser.TenantUserRoles
                                                  .Select(x => new Claim(Constants.ClaimTypes.TenantRoles, x.TenantRole.ToString())));
                }
                else
                {
                    var tenantIdGuid = Guid.Parse(tenantId);
                    tenantUser = user.TenantUsers.SingleOrDefault(x => x.TenantId == tenantIdGuid);
                    if (tenantUser != null)
                    {
                        context.IssuedClaims.Add(new Claim(Constants.ClaimTypes.TenantId, tenantId));
                        context.IssuedClaims.AddRange(tenantUser.TenantUserRoles.Select(x => new Claim(Constants.ClaimTypes.TenantRoles, x.TenantRole.ToString())));
                    }
                }

                user.DefaultTenant = tenantUser.Tenant;
                await dbContext.SaveChangesAsync();
            }
        }
コード例 #18
0
        public void CreateUser(TenantUser tenantUser)
        {
            if (!string.IsNullOrEmpty(tenantUser.Password))
            {
                ValidateUserPassword(tenantUser);
            }
            var user  = userService.GetByUsername(tenantUser.Username);
            var group = userService.GetUserGroupByAlias("managers");

            if (group == null)
            {
                throw new TenantException(ExceptionCode.GroupDoesNotExist.CodeToString(), ExceptionCode.GroupDoesNotExist, tenantUser.TenantUId, tenantUser.Name);
            }
            try
            {
                if (user == null)
                {
                    user      = userService.CreateUserWithIdentity(tenantUser.Username, tenantUser.Email);
                    user.Name = tenantUser.Name;
                }
                var startContentIds = user.StartContentIds;
                Array.Resize(ref startContentIds, startContentIds.Length + 1);
                startContentIds[startContentIds.GetUpperBound(0)] = tenantUser.StartContentIds[0];
                user.StartContentIds = startContentIds;

                var startMediaIds = user.StartMediaIds;
                Array.Resize(ref startMediaIds, startMediaIds.Length + 1);
                startMediaIds[startMediaIds.GetUpperBound(0)] = tenantUser.StartMediaIds[0];
                user.StartMediaIds = startMediaIds;

                user.AddGroup(group.ToReadOnlyGroup());
                if (!string.IsNullOrEmpty(tenantUser.Password))
                {
                    user.RawPasswordValue = (Membership.Providers["UsersMembershipProvider"] as UsersMembershipProvider)?.HashPasswordForStorage(tenantUser.Password);
                }
                userService.Save(user);
                ConnectorContext.AuditService.Add(AuditType.New, -1, user.Id, "User", $"User for {tenantUser.Username} has been created");

                tenantUser.AssignedUmbracoUserId = user.Id;
            }
            catch (Exception ex)
            {
                logger.Error(typeof(UserGroupService), ex.Message);
                logger.Error(typeof(UserGroupService), ex.StackTrace);
                throw;
            }
        }
コード例 #19
0
        public async Task <TenantUser> GetUserProfile()
        {
            TenantUser model = await _httpContext.Session.GetAsync <TenantUser>(SessionKeys.UserProfile);

            if (model != null)
            {
                return(model);
            }

            model = _dbContext.Users.FirstOrDefault(u => u.UserName.Equals(LoggedInUsername));

            if (model != null)
            {
                await _httpContext.Session.SetAsync <TenantUser>(SessionKeys.UserProfile, model);
            }

            return(model);
        }
コード例 #20
0
        private IEnumerable <Claim> GetRoleClaims(TenantUser user)
        {
            var roleClaims = new List <Claim>
            {
                new Claim(ClaimsIdentity.DefaultRoleClaimType, UserRoles.User)
            };

            if (user.IsAdmin)
            {
                roleClaims.Add(new Claim(ClaimsIdentity.DefaultRoleClaimType, UserRoles.Admin));
            }
            if (user.IsOwner)
            {
                roleClaims.Add(new Claim(ClaimsIdentity.DefaultRoleClaimType, UserRoles.TenantOwner));
            }

            return(roleClaims);
        }
コード例 #21
0
ファイル: Tenants.cs プロジェクト: zwjhuhu/Insight_Base
        /// <summary>
        /// 为租户关联用户
        /// </summary>
        /// <param name="id">租户ID</param>
        /// <param name="tenant">租户-用户关系实体数据</param>
        /// <returns>Result</returns>
        public Result <object> addTenantUser(string id, TenantUser tenant)
        {
            if (!verify())
            {
                return(result);
            }

            var data = getData(tenant.tenantId);
            var user = DbHelper.find <Application>(tenant.userId);

            if (data == null || user == null)
            {
                return(result.notFound());
            }

            tenant.id         = Util.newId();
            tenant.creatorId  = userId;
            tenant.createTime = DateTime.Now;

            return(DbHelper.insert(tenant) ? result.success(user) : result.dataBaseError());
        }
コード例 #22
0
        public void UpdateUser(TenantUser tenantUser)
        {
            var user = userService.GetByUsername(tenantUser.Username);

            if (user == null)
            {
                throw new TenantException(ExceptionCode.UsernameDoesNotExist.CodeToString(), ExceptionCode.UsernameDoesNotExist, tenantUser.Username);
            }

            if (!string.IsNullOrEmpty(tenantUser.Password))
            {
                ValidateUserPassword(tenantUser);
            }
            try
            {
                user.Name  = tenantUser.Name ?? user.Name;
                user.Email = tenantUser.Email ?? user.Email;
                if (!string.IsNullOrEmpty(tenantUser.Password))
                {
                    user.RawPasswordValue = (Membership.Providers["UsersMembershipProvider"] as UsersMembershipProvider)?.HashPasswordForStorage(tenantUser.Password);
                }

                userService.Save(user);

                if (!string.IsNullOrEmpty(tenantUser.Group) && !user.Groups.ToArray()[0].Name.Equals(tenantUser.Group))
                {
                    AssignUserToGroup(user.Username, tenantUser.Group);
                }

                ConnectorContext.AuditService.Add(AuditType.Save, -1, user.Id, "User", $"User {user.Username} has been edited");

                tenantUser.AssignedUmbracoUserId = user.Id;
            }
            catch (Exception ex)
            {
                logger.Error(typeof(UserGroupService), ex.Message);
                logger.Error(typeof(UserGroupService), ex.StackTrace);
                throw;
            }
        }
コード例 #23
0
ファイル: IDataSeeder.cs プロジェクト: GoldPi/saas-template
        private async Task <TenantUser> CreateUserAsync(string userName, string password, string fullName, string email, string phoneNumber, string[] roles)
        {
            TenantUser applicationUser = new TenantUser
            {
                UserName       = userName,
                FullName       = fullName,
                Email          = email,
                PhoneNumber    = phoneNumber,
                EmailConfirmed = true,
                IsEnabled      = true
            };

            var result = await _accountManager.CreateUserAsync(applicationUser, roles, password);

            if (!result.Succeeded)
            {
                throw new Exception($"Seeding \"{userName}\" user failed. Errors: {string.Join(Environment.NewLine, result.Errors)}");
            }


            return(applicationUser);
        }
コード例 #24
0
        public JsonRpcResponseData CreateUser(TenantUser payload, ApiAuthorization authorization)
        {
            SetupAuth();
            IsValidRequest(authorization.AppId, authorization.ApiKey);
            var apiController = new ControllerService();

            try
            {
                var assignedUmbracoUserId = apiController.CreateUser(payload);
                return(new JsonRpcResponseData
                {
                    Message = "User created",
                    Status = JsonRpcResponseData.OK,
                    TenantUid = payload.TenantUId.ToString(),
                    Data = assignedUmbracoUserId
                });
            }
            catch (System.Exception ex)
            {
                throw HandleException(ex);
            }
        }
コード例 #25
0
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                var user = new TenantUser
                {
                    UserName    = model.Email,
                    Email       = model.Email,
                    TenantId    = _currentTenant.TenantId,
                    Status      = (int)TenantSubscription.Pro,
                    CreatedDate = DateTime.UtcNow,
                    LastUpdated = DateTime.UtcNow
                };


                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=532713
                    // Send an email with this link
                    //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                    //var callbackUrl = Url.Action(nameof(ConfirmEmail), "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);
                    //await _emailSender.SendEmailAsync(model.Email, "Confirm your account",
                    //    $"Please confirm your account by clicking this link: <a href='{callbackUrl}'>link</a>");
                    await _signInManager.SignInAsync(user, isPersistent : false);

                    _logger.LogInformation(3, "User created a new account with password.");
                    return(RedirectToLocal(returnUrl));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
コード例 #26
0
        /// <summary>
        /// 根据对象实体数据新增一个用户
        /// </summary>
        /// <param name="user">用户对象</param>
        /// <returns>Result</returns>
        public Result <object> addUser(User user)
        {
            if (!verify("newUser"))
            {
                return(result);
            }

            if (user == null)
            {
                return(result.badRequest());
            }

            if (Core.isExisted(user))
            {
                return(result.accountExists());
            }

            user.id         = Util.newId();
            user.password   = Util.hash("123456");
            user.creatorId  = userId;
            user.createTime = DateTime.Now;
            if (!DbHelper.insert(user))
            {
                return(result.dataBaseError());
            }

            var tu = new TenantUser
            {
                id         = Util.newId(),
                tenantId   = tenantId,
                userId     = user.id,
                creatorId  = userId,
                createTime = DateTime.Now
            };

            return(DbHelper.insert(tu) ? result.created(user) : result.dataBaseError());
        }
コード例 #27
0
        public string ChangeUserPassword(TenantUser tenantUser)
        {
            var user = userService.GetByUsername(tenantUser.Username);

            if (user == null)
            {
                throw new TenantException(ExceptionCode.UsernameDoesNotExist.CodeToString(), ExceptionCode.UsernameDoesNotExist, tenantUser.Username);
            }
            ValidateUserPassword(tenantUser);
            try
            {
                user.RawPasswordValue = (Membership.Providers["UsersMembershipProvider"] as UsersMembershipProvider)?.HashPasswordForStorage(tenantUser.Password);
                userService.Save(user);
                ConnectorContext.AuditService.Add(AuditType.Save, -1, user.Id, "User", $"Password for {user.Id} has been changed");

                return(tenantUser.Username);
            }
            catch (Exception ex)
            {
                logger.Error(typeof(UserGroupService), ex.Message);
                logger.Error(typeof(UserGroupService), ex.StackTrace);
                throw;
            }
        }
コード例 #28
0
        public IActionResult SaveTenantUser([FromBody] TenantUser model)
        {
            string password = CreatePassword(6);
            string url      = $"{_configuration["FrontEndUrl"]}";

            if (model == null)
            {
                return(BadRequest("Error, Make sure tenant form is complete!"));
            }

            ApplicationUser userChecker = _contextUsers.Users.FirstOrDefault(id => id.Email == model.Email);

            if (userChecker != null)
            {
                return(BadRequest("Error, User with this email already exists. Contact administrator."));
            }

            try
            {
                ApplicationUser applicationUser = new ApplicationUser();
                applicationUser.FirstName = model.FirstName;
                applicationUser.LastName  = model.LastName;
                applicationUser.Email     = model.Email;
                applicationUser.UserName  = model.Email;
                applicationUser.Reference = model.Reference;
                applicationUser.DateStamp = DateTime.Now;
                applicationUser.TenantId  = model.TenantId;

                IdentityResult result = _userManager.CreateAsync(applicationUser, password).Result;

                _context.SaveChanges();

                _userManager.AddToRoleAsync(applicationUser, "ADMINISTRATOR");
                _contextUsers.SaveChanges();

                var smtp = new SmtpClient
                {
                    Host           = "smtp.gmail.com",
                    Port           = 587,
                    EnableSsl      = true,
                    DeliveryMethod = SmtpDeliveryMethod.Network,
                    Credentials    = new NetworkCredential("*****@*****.**", "StratisQ@2020"),
                    Timeout        = 20000
                };

                using (var message = new MailMessage("*****@*****.**", model.Email)
                {
                    IsBodyHtml = true,
                    Subject = "StratisQ: " + _contextUsers.Tenants.FirstOrDefault(id => id.TenantId == model.TenantId).TenantKey + " Account",
                    Body = "<html><body>Hi " + applicationUser.FirstName + ", <br/>Your account has created sucessfully: <br/><br/>Link: " + url + "<br/><br/>Username: "******"<br/>Password: "******" <br/><br/><br/><p>StratisQ</p></body></html></body></html>"
                })
                {
                    smtp.Send(message);
                }

                return(Ok());
            }
            catch (Exception Ex)
            {
                return(BadRequest("Something bad happened! " + Ex.Message));
            }
        }
コード例 #29
0
 public HomeController(IOptions <TenantUser> opSettings, IOptions <AppSettings> appSettings)
 {
     _options     = opSettings.Value;
     _appSettings = appSettings.Value;
 }
コード例 #30
0
        private async Task <RequestResult <AuthorizationData> > GetAuthorizationDataResult(TenantContext requestTenant,
                                                                                           TenantUser user)
        {
            var tenantSettings = await _tenantsRepository.GetTenantSettings(requestTenant.TenantId);

            var token = _jwtTokenFactory.Create(user, tenantSettings, requestTenant.TenantCode);

            return(RequestResult <AuthorizationData>
                   .Success(
                       new AuthorizationData
            {
                Token = token,
                User = _mapper.Map <UserDto>(user),
            }));
        }