Projekt

Obecné

Profil

« Předchozí | Další » 

Revize a70f3c5f

Přidáno uživatelem Vojtěch Bartička před asi 2 roky(ů)

Added UserController and GET on /users

Zobrazit rozdíly:

Backend/Backend/Controllers/UserController.cs
1
using Core.Services;
2
using Microsoft.AspNetCore.Mvc;
3
using Models.Users;
4
using RestAPI.Authentication;
5
using RestAPI.Controllers.Common;
6
using RestAPI.Exceptions;
7
using RestAPI.Utils;
8
using System.Net;
9

  
10
namespace RestAPI.Controllers
11
{
12
    public class UserController : CommonControllerBase
13
    {
14
        private readonly Serilog.ILogger logger;
15
        private readonly IUserService userService;
16

  
17
        public UserController(Serilog.ILogger logger, IUserService userService)
18
        {
19
            this.logger = logger;
20
            this.userService = userService;
21
        }
22

  
23
        [HttpGet("/users")]
24
        [Authorize(Models.Enums.ERole.ADMINISTRATOR)]
25
        [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(UserList))]
26
        [ProducesResponseType((int)HttpStatusCode.Forbidden)]
27
        public ActionResult<UserList> GetUsers([FromServices] ClientInfo clientInfo)
28
        {
29
            if (clientInfo.LoggedUser == null)
30
            {
31
                logger.Warning("ClientInfo has null LoggerUser in [Authorized] controller /annotations");
32
                return Problem();
33
            }
34

  
35
            try
36
            {
37
                var userList = userService.GetUsers();
38
                return Ok(userList);
39
            }
40
            catch (Exception e)
41
            {
42
                throw new InternalErrorException(e.Message);
43
            }
44

  
45
            
46
        }
47
    }
48
}
Backend/Core/Services/UserService/IUserService.cs
1 1
using Core.Entities;
2 2
using Models.Enums;
3
using Models.Users;
3 4
using System;
4 5
using System.Collections.Generic;
5 6
using System.Linq;
......
16 17
        public User UpdateUser(User user, string? username = null, string? name = null, string? surname = null, ERole? role = null);
17 18
        public User ChangePassword(User user, string newPassword);
18 19
        public User? CheckUsernamePassword(string username, string password);
20
        public UserList GetUsers();
19 21
    }
20 22
}
Backend/Core/Services/UserService/UserServiceEF.cs
8 8
using System.Threading.Tasks;
9 9
using Serilog;
10 10
using BCrypt.Net;
11
using Models.Users;
12
using AutoMapper;
11 13

  
12 14
namespace Core.Services
13 15
{
......
15 17
    {
16 18
        private readonly DatabaseContext _databaseContext;
17 19
        private readonly ILogger _logger;
20
        private readonly IMapper _mapper;
18 21

  
19
        public UserServiceEF(DatabaseContext context, ILogger logger)
22
        public UserServiceEF(DatabaseContext context, ILogger logger, IMapper mapper)
20 23
        {
21 24
            _databaseContext = context;
22 25
            _logger = logger;
26
            _mapper = mapper;
23 27
        }
24 28

  
25 29
        public User ChangePassword(User user, string newPassword)
......
141 145
            _databaseContext.SaveChanges();
142 146
            return user;
143 147
        }
148

  
149
        public UserList GetUsers()
150
        {
151
            var users = _databaseContext.Users.Select(u => u);
152
            UserList userList = new UserList();
153
            foreach (var user in users)
154
            {
155
                userList.Users.Add(_mapper.Map<UserInfo>(user));
156
            }
157

  
158
            return userList;
159
        }
144 160
    }
145 161
}
Backend/Models/Users/UserList.cs
1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Threading.Tasks;
6

  
7
namespace Models.Users
8
{
9
    public class UserList
10
    {
11
        public List<UserInfo> Users { get; set; } = new();
12
    }
13
}

Také k dispozici: Unified diff