public IActionResult Login(BaseRequest <LoginRequest> data)
        {
            var sourceId = Guid.Parse(data.Request.SourceId);

            var source = _context.Sources.Find(sourceId);

            if (source == null || source.SecretKey != data.Request.SourceSecretKey)
            {
                ModelState.AddModelError("SourceSecretKey", "Invalid sourceSecretKey");
                return(BadRequest(_responseFactory.CreateFailureResponse(data.Request.SourceId, model: ModelState)));
            }

            var foundUser = _context.Users.FirstOrDefault(u => u.Email == data.Request.UserData.Email &&
                                                          u.Phone == data.Request.UserData.Phone);

            if (foundUser == null || !_hasher.VerifyPasswordHash(foundUser.PasswordHash, data.Request.UserData.Password))
            {
                ModelState.AddModelError("Email or Password", "Wrong email or password");
                return(BadRequest(_responseFactory.CreateFailureResponse(data.Request.SourceId, model: ModelState)));
            }

            var response = new
            {
                userId    = foundUser.Id,
                secretKey = foundUser.SecretKey
            };

            return(Ok(_responseFactory.CreateSuccessfullyResponse(data.Request.SourceId, new { userData = response })));
        }
Example #2
0
        public IActionResult UploadFile([FromBody] BaseRequest <UploadFileRequest> data)
        {
            if (!Guid.TryParse(data.Request.SourceId, out var sourceId))
            {
                return(BadRequest(_responseFactory.CreateFailureResponse(data.Request.SourceId)));
            }

            var source = _context.Sources.Find(sourceId);

            if (source == null || source.SecretKey != data.Request.SourceSecretKey)
            {
                return(BadRequest(_responseFactory.CreateFailureResponse(data.Request.SourceId)));
            }

            if (data.Request == null)
            {
                return(BadRequest(_responseFactory.CreateFailureResponse(data.Request.SourceId)));
            }

            if (data.Request.Files.ToArray().Length == 0)
            {
                return(BadRequest(_responseFactory.CreateFailureResponse(data.Request.SourceId)));
            }

            var target = Path.Join(Directory.GetCurrentDirectory(), "Uploads");

            Directory.CreateDirectory(target);

            var createdFiles = new List <File>();

            foreach (var fileData in data.Request.Files)
            {
                System.IO.File.WriteAllBytes(Path.Join(target, fileData.Name),
                                             Convert.FromBase64String(fileData.ContentByte));
                createdFiles.Add(new File()
                {
                    Name = fileData.Name,
                    Path = Path.Join(target, fileData.Name)
                });
            }

            _context.Files.AddRange(createdFiles);
            _context.SaveChanges();

            var uploadFilesDto = new List <UploadFileDto>();

            foreach (var file in createdFiles)
            {
                uploadFilesDto.Add(new UploadFileDto()
                {
                    Content = file.Content,
                    Id      = file.Id.ToString(),
                    Name    = file.Name
                });
            }

            return(Ok(_responseFactory.CreateSuccessfullyResponse(data.Request.SourceId, new { files = uploadFilesDto })));
        }
Example #3
0
        public IActionResult RegisterUser(BaseRequest <RegisterUserRequest> data)
        {
            Guid sourceId = Guid.Parse(data.Request.SourceId);

            var source = _context.Sources.Find(sourceId);

            if (source == null || source.SecretKey != data.Request.SourceSecretKey)
            {
                ModelState.AddModelError("SecretKey", "Wrong Secret key");
                return(BadRequest(_responseFactory.CreateFailureResponse(data.Request.SourceId, model: ModelState)));
            }

            var userData    = data.Request.UserData;
            var createdUser = new User()
            {
                Email               = userData.Email,
                Phone               = userData.Phone,
                Surname             = userData.Surname,
                BirthDate           = userData.BirthDate,
                GenderId            = userData.GenderId,
                GivenName           = userData.GivenName,
                MiddleName          = userData.MiddleName,
                PasswordHash        = _hasher.HashPassword(userData.Password),
                EmailSubscribeAgree = userData.EmailSubscribeAgree,
                PersonalDataAgree   = userData.PersonalDataAgree,
                Source              = source
            };

            _context.Users.Add(createdUser);
            _context.SaveChanges();

            return(Ok(_responseFactory.CreateSuccessfullyResponse(data.Request.SourceId, new
            {
                userData = new
                {
                    userId = createdUser.Id,
                    secretKey = createdUser.SecretKey
                }
            })));
        }