Пример #1
0
        private async void  CreateAdminIfNotExists()
        {
            var user = _unitOfWork.Users.Find(u => u.Email.Equals(AdminEmail)).FirstOrDefault();

            if (user == null)
            {
                var userdmin = new User
                {
                    Email        = AdminEmail,
                    Name         = AdminEmail,
                    PasswordHash = _cryptoProvider.GetHash(AdminPassword),
                    Roles        = new List <string>()
                };

                AppendRole(userdmin, "admin");

                await _unitOfWork.Users.CreateAsync(userdmin);
            }
        }
Пример #2
0
        public async Task RegisterAsync(RegisterModelDto registerModelDto)
        {
            ValidateEmail(registerModelDto.Email);

            var user = _mapper.Map <User>(registerModelDto);

            AppendDefaultRole(user);

            user.PasswordHash = _cryptoProvider.GetHash(registerModelDto.Password);

            await _unitOfWork.Users.CreateAsync(user);

            _logger.LogInformation($"User register with email {registerModelDto.Email}");
        }
Пример #3
0
        public async Task <HttpResponseMessage> Upload()
        {
            // Check if the request contains multipart/form-data.
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            // Key - file name, Value - error of the loading
            var uploadFileInfos = new List <UploadResultViewModel>();

            try
            {
                // Get temporary album Id
                int tempAlbumId = _albumService.GetAlbumId(User.Id, "Temporary");

                // Get path to the temporary album folder
                string pathToTempAlbum = _pathUtil.BuildAbsoluteAlbumPath(User.Id, tempAlbumId);

                // Create directory, if it isn't exist
                if (!_directoryWrapper.Exists(pathToTempAlbum))
                {
                    _directoryWrapper.CreateDirectory(pathToTempAlbum);
                }

                // TODO create this instance with fabrik
                var provider = new MultipartFormDataStreamProvider(pathToTempAlbum);

                // Read the form data from request (save all files in selected folder) TODO must be wrapped too
                await Request.Content.ReadAsMultipartAsync(provider);

                int albumId = _albumService.GetAlbumId(User.Id, "Temporary");

                // Check all uploaded files
                foreach (MultipartFileData fileData in provider.FileData)
                {
                    string originalFileName = fileData.Headers.ContentDisposition.FileName.Trim('"');

                    long fileSize = _fileHelper.GetFileSize(fileData.LocalFileName);

                    string fileHash = _cryptoProvider.GetHash(string.Format("{0}{1}", originalFileName, fileSize));

                    if (fileSize > MAX_PHOTO_SIZE_IN_BYTES)
                    {
                        _fileWrapper.Delete(fileData.LocalFileName);

                        uploadFileInfos.Add(new UploadResultViewModel
                        {
                            Hash       = fileHash,
                            IsAccepted = false,
                            Error      = "This file contains no image data"
                        });
                    }

                    // Is it really image file format ?
                    if (!_fileHelper.IsImageFile(fileData.LocalFileName))
                    {
                        _fileWrapper.Delete(fileData.LocalFileName);

                        uploadFileInfos.Add(new UploadResultViewModel
                        {
                            Hash       = fileHash,
                            IsAccepted = false,
                            Error      = "This file contains no image data"
                        });

                        continue;
                    }

                    string format = _fileHelper.GetRealFileFormat(fileData.LocalFileName);

                    var photoModel = _photoService.AddPhoto(PhotoViewModel.ToModel(User.Id, albumId, format));

                    string destFileName = string.Format("{0}\\{1}.{2}", pathToTempAlbum, photoModel.Id, format);

                    try
                    {
                        if (File.Exists(destFileName))
                        {
                            _fileWrapper.Delete(destFileName);
                        }

                        _fileWrapper.Move(fileData.LocalFileName, destFileName);
                    }
                    catch (IOException)
                    {
                        _fileWrapper.Delete(fileData.LocalFileName);

                        uploadFileInfos.Add(new UploadResultViewModel
                        {
                            Hash       = fileHash,
                            IsAccepted = false,
                            Error      = "File already uploaded"
                        });

                        continue;
                    }

                    // Create thumbnails for photo
                    _photoProcessor.CreateThumbnails(User.Id, albumId, photoModel.Id, photoModel.Format);

                    uploadFileInfos.Add(new UploadResultViewModel
                    {
                        Hash       = fileHash,
                        Id         = photoModel.Id,
                        IsAccepted = true
                    });
                }

                // Create collage for album 'Temporary'
                _collageProcessor.CreateCollage(User.Id, albumId);
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
            }

            return(Request.CreateResponse(HttpStatusCode.OK, uploadFileInfos, new JsonMediaTypeFormatter()));
        }