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); } }
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}"); }
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())); }