public async Task Register([FromBody] AdminCreateDto administrator)
        {
            _logger.LogInfo("API HttpPost api/Account/register");

            try
            {
                var rawPassword = administrator.PasswordHash;
                administrator.PasswordHash = GetHashFromString(administrator.PasswordHash);
                administratorService.AddAdministrator(administrator);
                var identity   = GetIdentity(administrator.Username, rawPassword);
                var encodedJwt = GetToken(administrator.Username, rawPassword);

                var response = new
                {
                    access_token = encodedJwt,
                    username     = identity.Name,
                    role         = identity.Claims.ToList()[1].Value
                };

                Response.ContentType = "application/json";
                await Response.WriteAsync(JsonConvert.SerializeObject(response, new JsonSerializerSettings {
                    Formatting = Formatting.Indented
                }));
            }
            catch (Exception e)
            {
                _logger.LogError("API HttpPost api/Account/register " + e.Message);
                await Response.WriteAsync(JsonConvert.SerializeObject(new { error = e.Message }, new JsonSerializerSettings {
                    Formatting = Formatting.Indented
                }));
            }
        }
        public void AddAdministrator(AdminCreateDto administrator)
        {
            var query = $@"
                              IF NOT EXISTS(
                              SELECT id FROM Roles WHERE Name = 'Administrator'
                              )
                              begin
                              insert into Roles VALUES ('Administrator')
                            end

                           IF NOT EXISTS(
                           SELECT 1 FROM Faculties WHERE Name = @{nameof(administrator.Faculty)}
                           )
                           begin
                            insert into Faculties VALUES (@{nameof(administrator.Faculty)})
                           end

                        insert into users values(
                        @{nameof(administrator.Username)}
                        ,@{nameof(administrator.PasswordHash)}
                        ,(SELECT id FROM Roles WHERE Name = 'Administrator'))

                    insert into Administrators values (
                        @{nameof(administrator.FullName)}
                        ,( SELECT id FROM Faculties WHERE Name = @{nameof(administrator.Faculty)})
                        ,@{nameof(administrator.Email)}
                        ,@{nameof(administrator.PhoneNumber)}
                        ,SCOPE_IDENTITY())";

            _dbConnection.Execute(query, administrator);
        }
        public ActionResult <AdminReadDto> AddNewAdmin([FromBody] AdminCreateDto adminCreateDto)
        {
            var adminReadDto = this._adminService.AddNewAdmin(adminCreateDto);

            if (adminReadDto == null)
            {
                return(this.BadRequest());
            }

            return(this.CreatedAtRoute(new { Id = adminReadDto.AdminId }, adminReadDto));
        }
Beispiel #4
0
        public AdminReadDto AddNewAdmin(AdminCreateDto adminCreateDto)
        {
            Admin existingAdmin = this._repository.GetAdminByEmail(adminCreateDto.Email);

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

            var newAdminModel = this._mapper.Map <Admin>(adminCreateDto);

            newAdminModel.Password = this._authManager.EncryptPassword(newAdminModel.Password);

            this._repository.Add(newAdminModel);
            this._repository.SaveChanges();

            var adminReadDto = this._mapper.Map <AdminReadDto>(newAdminModel);

            return(adminReadDto);
        }