Class UserController
- Namespace
- GastroSky.Controllers.V1
- Assembly
- GastroSky.dll
User related endpoints.
[ApiController]
[Authorize]
[Route("api/v1/users")]
[Produces("application/json", new string[] { })]
public class UserController : GastroSkyControllerBase
- Inheritance
-
UserController
- Inherited Members
Constructors
UserController(GastroSkyDatabaseContext, IEmailValidator, IPasswordHashing, ISlugGenerator, IMapper, IConfiguration, IRemoteFileStorage, ILogger<UserController>, IImageManipulationService)
User related endpoints.
public UserController(GastroSkyDatabaseContext db, IEmailValidator emailValidator, IPasswordHashing passwordHashing, ISlugGenerator slugGenerator, IMapper mapper, IConfiguration configuration, IRemoteFileStorage remoteFileStorage, ILogger<UserController> logger, IImageManipulationService imageManipulationService)
Parameters
dbGastroSkyDatabaseContextemailValidatorIEmailValidatorpasswordHashingIPasswordHashingslugGeneratorISlugGeneratormapperIMapperconfigurationIConfigurationremoteFileStorageIRemoteFileStorageloggerILogger<UserController>imageManipulationServiceIImageManipulationService
Methods
CreateUser(UserCreationRequestDto)
Creates a new user manually.
[HttpPost]
[Route("")]
[Authorize(Policy = "https://api.gastrosky.ch/identity/claims/resources/users:W")]
[ProducesResponseType(400)]
[ProducesResponseType(403)]
[ProducesResponseType(404)]
[ProducesResponseType(500)]
[ProducesResponseType<ResponseBodyDto<UserResponseDto>>(201)]
public Task<IActionResult> CreateUser(UserCreationRequestDto dto)
Parameters
dtoUserCreationRequestDtoRequest DTO containing the new user account details. Check out the API DocFX documentation on UserCreationRequestDto for more information.
Returns
Remarks
Sample request: ( profilePictureBytesBase64 example string is NOT a valid image format! )
POST /api/v1/users
{
"email": "maria@example.com",
"passwordHashSHA256": "d75a838dc758ba17f28bd8dbac605cb70c35465263d5733164521de2f7ef7926",
"slug": "mariab",
"name": "Maria Bernasconi",
"phone": "+41 79 000 00",
"address": "Via Fuori dai Coglioni",
"zipCode": "6969",
"location": "Diocane",
"countryCodeISO": "XYZ",
"websiteURL": "https://reddit.com",
"profilePictureBytesBase64": "bm90IGFuIGltYWdlIGZmcy4uLg==",
"language": 0,
"claims": [
{
"resource": "https://gastrosky.ch/identity/claims/resources/posts",
"accessType": 1
},
{
"resource": "https://gastrosky.ch/identity/claims/resources/companies",
"accessType": 3
}
]
}
GetActiveUserSubscriptions()
[HttpGet]
[Route("active-subscriptions")]
[ProducesResponseType(404)]
[ProducesResponseType<ResponseBodyDto<ActiveSubscriptionResponseDto>>(200)]
public Task<IActionResult> GetActiveUserSubscriptions()
Returns
GetInvites()
[HttpGet]
[Route("invites")]
[ProducesResponseType<ResponseBodyDto<UserCompanyResponseDto>>(200)]
public Task<IActionResult> GetInvites()
Returns
GetUser(string)
Gets a specific user's information.
[HttpGet]
[Route("{slug}")]
[Authorize(Policy = "https://api.gastrosky.ch/identity/claims/resources/users:R")]
[ProducesResponseType<ResponseBodyDto<UserResponseDto>>(200)]
[ProducesResponseType(403)]
public Task<IActionResult> GetUser(string slug)
Parameters
slugstringThe user's slug string.
Returns
- See Also
GetUserProPic(string)
[HttpGet]
[Route("propic/{slug}")]
[Produces("application/octet-stream", new string[] { "application/json" })]
[AllowAnonymous]
public Task<IActionResult> GetUserProPic(string slug)
Parameters
slugstring
Returns
GetUsers(string?, PaginationFilter?, SortingOrder)
Gets a list of users with searchFilter, paginationFilter and sortingOrder applied.
[HttpGet]
[Route("")]
[Authorize(Policy = "https://api.gastrosky.ch/identity/claims/resources/users:R")]
[ProducesResponseType<ResponseBodyDto<UserResponseDto>>(200)]
public Task<IActionResult> GetUsers(string? searchFilter = null, PaginationFilter? paginationFilter = null, SortingOrder sortingOrder = SortingOrder.Ascending)
Parameters
searchFilterstringUser search filter. This will query the DB against users that have columns like name, email address, phone number, etc... with a similar or identical value to the provided filter string.
paginationFilterPaginationFilterPagination filter. PaginationFilter
sortingOrderSortingOrderDesired sorting order. Can be
0forSortingOrder.Ascendingor1forSortingOrder.Descending. SortingOrder
Returns
Exceptions
- ArgumentOutOfRangeException
Thrown if an invalid SortingOrder parameter is passed.
Me()
Gets the user account information associated with the User specified in the provided auth token.
[HttpGet]
[Route("me")]
[ProducesResponseType(404)]
[ProducesResponseType<ResponseBodyDto<UserResponseDto>>(200)]
public Task<IActionResult> Me()
Returns
UpdateUserClaims(UserClaimsModificationRequestDto)
Updates a user's permissions/auth claims.
[HttpPut]
[Route("claims")]
[Authorize(Policy = "https://api.gastrosky.ch/identity/claims/resources/users:R")]
[Authorize(Policy = "https://api.gastrosky.ch/identity/claims/resources/users:W")]
[ProducesResponseType(400)]
[ProducesResponseType(403)]
[ProducesResponseType(404)]
[ProducesResponseType(500)]
[ProducesResponseType<ResponseBodyDto<UserResponseDto>>(200)]
public Task<IActionResult> UpdateUserClaims(UserClaimsModificationRequestDto dto)
Parameters
dtoUserClaimsModificationRequestDtoRequest DTO containing the user slug and the updated user auth claims. Check out the API DocFX documentation on UserClaimsModificationRequestDto for more information.
Returns
Remarks
Sample request:
PUT /api/v1/users/claims
{
"slug": "mariab",
"claims": [
{
"resource": "https://gastrosky.ch/identity/claims/resources/posts",
"accessType": 1
},
{
"resource": "https://gastrosky.ch/identity/claims/resources/companies",
"accessType": 3
}
]
}
UpdateUserData(UserModificationRequestDto)
Updates a user's account information.
[HttpPut]
[Route("")]
[ProducesResponseType(400)]
[ProducesResponseType(403)]
[ProducesResponseType(500)]
[ProducesResponseType<ResponseBodyDto<UserResponseDto>>(200)]
public Task<IActionResult> UpdateUserData(UserModificationRequestDto dto)
Parameters
dtoUserModificationRequestDtoRequest DTO containing the user's updated information. Check out the API DocFX documentation on UserModificationRequestDto for more information.
Returns
Remarks
Sample request:
PUT /api/v1/users
{
"slug": "mariab",
"name": "Maria Bernoccolo",
"phone": "+39000000000",
"address": "Via Aggiornata nel DB",
"zipCode": "6969",
"location": "Hyrule",
"countryCodeISO": "ZLD",
"websiteURL": "https://example.org",
"profilePictureBytesBase64": null,
"language": 1
}