public async Task <CreatedUserViewModel> CreateNew(CreateUserDto dto, IPAddress remoteHost)
        {
            var result = await DbContext.Users.AddAsync(new User
            {
                Username     = dto.Username,
                Email        = dto.Email,
                PasswordHash = dto.Password,
                Birthday     = dto.BirthDay,
                CreationDate = DateTime.UtcNow,
                AccountType  = AccountType.User
            });

            await DbContext.SaveChangesAsync();

            var session = await InternalAuthenticateUser(result.Entity.Id, remoteHost);

            return(new CreatedUserViewModel()
            {
                User = new UserSummaryViewModel
                {
                    Id = result.Entity.Id,
                    Username = result.Entity.Username,
                    CreationDateUtc = result.Entity.CreationDate
                },
                Session = UserSessionViewModel.FromUserSession(session)
            });
        }
Exemple #2
0
        public ActionResult EndTestSession(UserSessionViewModel user)
        {
            var testRepo = new TestRepository();
            var result   = testRepo.EndTestSession(user.TestSessionID);

            if (result == TestRepository.DefaultErrorCode)
            {
                return(Json("MyTests", JsonRequestBehavior.AllowGet));
            }

            return(Json("TestSessionResult?testSessionId="
                        + user.TestSessionID + "&userId=" + user.UserID
                        , JsonRequestBehavior.AllowGet));
        }
        public async Task <UserSessionViewModel> AuthenticateUser(AuthUserDto dto, IPAddress remoteHost)
        {
            if (dto is null)
            {
                throw new ArgumentNullException(nameof(dto));
            }
            if (remoteHost.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork && remoteHost.AddressFamily != System.Net.Sockets.AddressFamily.InterNetworkV6)
            {
                throw new ArgumentOutOfRangeException(nameof(remoteHost), "Invalid IP Address");
            }

            dto.Password = Utilities.StringUtilities.ComputeHash(dto.Password, System.Security.Cryptography.HashAlgorithmName.SHA512);

            var session = await UserRepository.AuthenticateUser(dto, remoteHost);

            return(UserSessionViewModel.FromUserSession(session));
        }
        public void UploadForSeries(Subtitles subtitles, int itemId, int episodeId, HttpPostedFileBase file)
        {
            //Save the file
            string filePath = FileManager.SaveSubtitlesInFolder(file, itemId + "/" + episodeId);
            UserSessionViewModel loggedInUser = (UserSessionViewModel)HttpContext.Current.Session["Login"];

            subtitles.FilePath = filePath;
            subtitles.FileName = file.FileName;
            subtitles.Episode  = new Episode {
                Id = episodeId
            };
            subtitles.Uploader = new User {
                Username = loggedInUser.Username
            };

            //Add the subtitles to the database
            subtitlesRepo.CreateSubtitlesForSeries(subtitles);
        }
Exemple #5
0
        public Result <UserSessionViewModel> GetUserSessionViewModel(string userId)
        {
            SelectSpecification <AppUserEntity, UserSessionViewModel> userSpecification = new SelectSpecification <AppUserEntity, UserSessionViewModel>();

            userSpecification.AddFilter(x => x.Id == userId);
            userSpecification.AddSelect(x => new UserSessionViewModel(
                                            x.Id,
                                            x.UserName));

            UserSessionViewModel userRoles = _userRepository.SingleOrDefault(userSpecification);

            if (userRoles == null)
            {
                _logger.LogWarning($"No user. UserId {userId}");
                return(Result.Fail <UserSessionViewModel>("no_user", "No user"));
            }

            return(Result.Ok(userRoles));
        }