Rôles ajoutés

This commit is contained in:
2026-06-11 01:50:58 +02:00
parent 673269e2b8
commit 0b69eee16b
15 changed files with 623 additions and 30 deletions
+31 -1
View File
@@ -1,5 +1,4 @@
import { Observable } from "rxjs"; import { Observable } from "rxjs";
import { Discussion } from "../../pages/menu/menu-users/menu-users.component";
import { HttpClient } from "@angular/common/http"; import { HttpClient } from "@angular/common/http";
import { inject, Injectable } from "@angular/core"; import { inject, Injectable } from "@angular/core";
@@ -11,6 +10,21 @@ export interface Message {
authorName: string; authorName: string;
} }
export interface MemberWithRole {
userId: number;
username: string;
roleId: number | null;
roleLibelle: string | null;
}
export interface Discussion {
id: number;
name: string;
isGroup: boolean;
membersCount?: number;
groupId?: number;
}
@Injectable({ providedIn: 'root' }) @Injectable({ providedIn: 'root' })
export class discussionsService { export class discussionsService {
@@ -32,4 +46,20 @@ export class discussionsService {
createGroupDiscussion(groupName: string, usernames: string[]): Observable<Discussion> { createGroupDiscussion(groupName: string, usernames: string[]): Observable<Discussion> {
return this.http.post<Discussion>(`${this.apiUrl}/discussions/group`, { groupName, usernames }); return this.http.post<Discussion>(`${this.apiUrl}/discussions/group`, { groupName, usernames });
} }
getDiscussionMembers(discussionId: string): Observable<string[]> {
return this.http.get<string[]>(`${this.apiUrl}/discussions/${discussionId}/members`);
}
getMembersWithRoles(discussionId: string): Observable<MemberWithRole[]> {
return this.http.get<MemberWithRole[]>(`${this.apiUrl}/discussions/${discussionId}/members/roles`);
}
createRole(libelle: string): Observable<{ id: number, libelle: string }> {
return this.http.post<{ id: number, libelle: string }>(`${this.apiUrl}/roles`, { libelle });
}
assignRole(groupId: number, userId: number, roleId: number): Observable<void> {
return this.http.post<void>(`${this.apiUrl}/groups/${groupId}/members/${userId}/role`, { roleId });
}
} }
@@ -40,4 +40,216 @@
font-size: 18px; font-size: 18px;
font-weight: 500; font-weight: 500;
color: #c07070; color: #c07070;
}
ion-modal {
--background: transparent;
}
/* MODALE */
.modal-layout {
display: flex;
flex-direction: column;
height: 100%;
background: radial-gradient(
ellipse at top,
#fff 0%,
#f9ece9 45%,
#f3d4cc 100%
);
border-radius: 22px 22px 0 0;
box-shadow: 0 -12px 45px rgba(200, 120, 100, 0.25);
overflow: hidden;
}
/* HEADER */
.modal-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 18px;
background: rgba(255, 255, 255, 0.6);
backdrop-filter: blur(10px);
border-bottom: 1px solid rgba(192, 112, 112, 0.15);
}
.modal-title {
margin: 0;
font-size: 1.15rem;
font-weight: 700;
color: #c07070;
}
/* CLOSE */
.modal-close-btn {
width: 38px;
height: 38px;
border: none;
border-radius: 50%;
background: #fff;
color: #c07070;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 3px 12px rgba(200, 120, 100, 0.15);
cursor: pointer;
transition: all 0.2s ease;
ion-icon {
font-size: 1.2rem;
}
&:hover {
transform: translateY(-1px);
box-shadow: 0 6px 18px rgba(200, 120, 100, 0.22);
}
&:active {
transform: scale(0.92);
}
}
/* BODY */
.modal-body {
display: flex;
flex-direction: column;
gap: 12px;
padding: 18px;
overflow-y: auto;
}
/* MEMBER CARD */
.member-card {
display: flex;
align-items: center;
justify-content: space-between;
padding: 14px;
background: rgba(255, 255, 255, 0.75);
border-radius: 16px;
box-shadow: 0 2px 12px rgba(200, 120, 100, 0.12);
transition: all 0.2s ease;
&:hover {
transform: translateY(-2px);
background: rgba(255, 255, 255, 0.92);
}
}
/* MEMBER INFO */
.member-info {
display: flex;
align-items: center;
gap: 12px;
}
.member-info img {
width: 38px;
height: 38px;
border-radius: 50%;
}
.member-text {
display: flex;
flex-direction: column;
gap: 2px;
}
.member-name {
font-size: 0.95rem;
font-weight: 600;
color: #7a3a3a;
}
.member-role {
font-size: 0.75rem;
color: rgba(122, 58, 58, 0.6);
}
/* ROLE ASSIGN */
.role-assign {
display: flex;
align-items: center;
gap: 6px;
}
/* INPUT */
.role-input {
width: 120px;
padding: 8px 10px;
border: 1px solid rgba(192, 112, 112, 0.25);
border-radius: 10px;
background: rgba(255, 255, 255, 0.8);
font-size: 0.85rem;
color: #7a3a3a;
outline: none;
transition: all 0.2s ease;
&:focus {
border-color: #c07070;
box-shadow: 0 0 0 3px rgba(192, 112, 112, 0.15);
}
}
/* BUTTON + */
.role-btn {
width: 34px;
height: 34px;
border: none;
border-radius: 10px;
background: #c07070;
color: white;
font-size: 18px;
font-weight: 600;
cursor: pointer;
box-shadow: 0 2px 10px rgba(192, 112, 112, 0.25);
transition: all 0.2s ease;
&:hover {
transform: translateY(-1px);
box-shadow: 0 6px 16px rgba(192, 112, 112, 0.35);
}
&:active {
transform: scale(0.92);
}
} }
@@ -1,6 +1,40 @@
<button class="profile-btn"> <button class="profile-btn" (click)="openModal()">
<div class="icon-wrapper"> <div class="icon-wrapper">
<img width="50" height="50" src="https://img.icons8.com/ios/50/user-male-circle--v1.png" alt="user"/> <img width="50" height="50" src="https://img.icons8.com/ios/50/user-male-circle--v1.png" alt="user"/>
</div> </div>
<span class="username">{{ name || 'Utilisateur' }}</span> <span class="username">{{ name || 'Utilisateur' }}</span>
</button> </button>
<ion-modal [isOpen]="isModalOpen()" (didDismiss)="closeModal()">
<ng-template>
<div class="modal-layout">
<div class="modal-header">
<h2 class="modal-title">Membres</h2>
<button class="modal-close-btn" (click)="closeModal()">
<ion-icon name="close-outline"/>
</button>
</div>
<div class="modal-body">
<div class="member-card" *ngFor="let member of members()">
<div class="member-info">
<img width="36" height="36" src="https://img.icons8.com/ios/50/user-male-circle--v1.png" alt="user"/>
<div class="member-text">
<span class="member-name">{{ member.username }}</span>
<span class="member-role" *ngIf="member.roleLibelle">{{ member.roleLibelle }}</span>
</div>
</div>
<div class="role-assign" *ngIf="groupId">
<input
class="role-input"
[(ngModel)]="newRoleInput[member.userId]"
placeholder="Nouveau rôle..."
/>
<button class="role-btn" (click)="assignRole(member.userId)">+</button>
</div>
</div>
</div>
</div>
</ng-template>
</ion-modal>
@@ -1,15 +1,63 @@
import {Component, inject, Input} from '@angular/core'; import { Component, Input, inject, signal } from '@angular/core';
import {AuthService} from "../../../core/auth/auth.service"; import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { IonModal, IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { closeOutline } from 'ionicons/icons';
import { discussionsService, MemberWithRole } from '../../../core/chat/discussion.service';
import { ActivatedRoute } from '@angular/router';
@Component({ @Component({
selector: 'app-messages-infouser', selector: 'app-messages-infouser',
imports: [], imports: [CommonModule, IonModal, IonIcon, FormsModule],
templateUrl: './messages-infouser.component.html', templateUrl: './messages-infouser.component.html',
styleUrl: './messages-infouser.component.css' styleUrl: './messages-infouser.component.css'
}) })
export class MessagesInfoUser { export class MessagesInfoUser {
@Input() name: string = ''; @Input() name: string = '';
private authService = inject(AuthService); @Input() groupId: number | null = null;
user = this.authService.currentUser; private discussionService = inject(discussionsService);
} private route = inject(ActivatedRoute);
isModalOpen = signal(false);
members = signal<MemberWithRole[]>([]);
newRoleInput: { [userId: number]: string } = {};
constructor() {
addIcons({ closeOutline });
}
openModal() {
const discussionId = this.route.snapshot.paramMap.get('discussionId')!;
this.discussionService.getMembersWithRoles(discussionId).subscribe({
next: (members) => {
this.members.set(members);
this.isModalOpen.set(true);
}
});
}
closeModal() { this.isModalOpen.set(false); }
assignRole(userId: number) {
const libelle = this.newRoleInput[userId]?.trim();
if (!libelle || !this.groupId) return;
this.discussionService.createRole(libelle).subscribe({
next: (role) => {
this.discussionService.assignRole(this.groupId!, userId, role.id).subscribe({
next: () => {
this.members.update(members =>
members.map(m => m.userId === userId
? { ...m, roleId: role.id, roleLibelle: libelle }
: m
)
);
this.newRoleInput[userId] = '';
}
});
}
});
}
}
@@ -2,7 +2,7 @@
<div class="header"> <div class="header">
<app-messages-menu/> <app-messages-menu/>
<app-messages-infouser [name]="discussionName"/> <app-messages-infouser [name]="discussionName" [groupId]="groupId"/>
</div> </div>
<div class="messages"> <div class="messages">
@@ -23,6 +23,7 @@ export class MessagesMain implements OnInit {
currentUserId!: number; currentUserId!: number;
messages: Message[] = []; messages: Message[] = [];
discussionName: string = ''; discussionName: string = '';
groupId: number | null = null;
ngOnInit() { ngOnInit() {
this.currentDiscussionId = this.route.snapshot.paramMap.get('discussionId')!; this.currentDiscussionId = this.route.snapshot.paramMap.get('discussionId')!;
@@ -31,7 +32,10 @@ export class MessagesMain implements OnInit {
this.discussionService.getDiscussions().subscribe({ this.discussionService.getDiscussions().subscribe({
next: (discussions) => { next: (discussions) => {
const discussion = discussions.find(d => d.id === +this.currentDiscussionId); const discussion = discussions.find(d => d.id === +this.currentDiscussionId);
console.log('discussion:', discussion);
this.discussionName = discussion?.name ?? ''; this.discussionName = discussion?.name ?? '';
this.groupId = discussion?.groupId ?? null;
console.log('groupId:', this.groupId);
} }
}); });
@@ -27,7 +27,6 @@ model/knots-dto-key-delete-key-dto.ts
model/knots-dto-message-create-message-dto.ts model/knots-dto-message-create-message-dto.ts
model/knots-dto-message-delete-message-dto.ts model/knots-dto-message-delete-message-dto.ts
model/knots-dto-message-get-message-details-dto.ts model/knots-dto-message-get-message-details-dto.ts
model/knots-dto-role-create-role-dto.ts
model/knots-dto-role-delete-role-dto.ts model/knots-dto-role-delete-role-dto.ts
model/knots-dto-user-create-user-dto.ts model/knots-dto-user-create-user-dto.ts
model/knots-dto-user-delete-user-dto.ts model/knots-dto-user-delete-user-dto.ts
@@ -41,6 +40,10 @@ model/knots-dto-user-update-user-profile-picture-dto.ts
model/knots-dto-user-update-username-dto.ts model/knots-dto-user-update-username-dto.ts
model/knots-endpoints-discussion-create-group-discussion-request.ts model/knots-endpoints-discussion-create-group-discussion-request.ts
model/knots-endpoints-discussion-create-private-discussion-request.ts model/knots-endpoints-discussion-create-private-discussion-request.ts
model/knots-endpoints-discussion-member-with-role-dto.ts
model/knots-endpoints-role-assign-role-request.ts
model/knots-endpoints-role-create-role-request.ts
model/knots-endpoints-role-role-dto.ts
model/models.ts model/models.ts
param.ts param.ts
provide-api.ts provide-api.ts
+132 -4
View File
@@ -28,6 +28,8 @@ import { KnotsDTOMessageGetMessageDetailsDto } from '../model/knots-dto-message-
import { KnotsEndpointsDiscussionCreateGroupDiscussionRequest } from '../model/knots-endpoints-discussion-create-group-discussion-request'; import { KnotsEndpointsDiscussionCreateGroupDiscussionRequest } from '../model/knots-endpoints-discussion-create-group-discussion-request';
// @ts-ignore // @ts-ignore
import { KnotsEndpointsDiscussionCreatePrivateDiscussionRequest } from '../model/knots-endpoints-discussion-create-private-discussion-request'; import { KnotsEndpointsDiscussionCreatePrivateDiscussionRequest } from '../model/knots-endpoints-discussion-create-private-discussion-request';
// @ts-ignore
import { KnotsEndpointsDiscussionMemberWithRoleDto } from '../model/knots-endpoints-discussion-member-with-role-dto';
// @ts-ignore // @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables';
@@ -317,14 +319,15 @@ export class DiscussionsService extends BaseService {
* @param name * @param name
* @param isGroup * @param isGroup
* @param membersCount * @param membersCount
* @param groupId
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress. * @param reportProgress flag to report request and response progress.
* @param options additional options * @param options additional options
*/ */
public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<any>; public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, groupId?: number, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<any>;
public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<any>>; public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, groupId?: number, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<any>>;
public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<any>>; public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, groupId?: number, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<any>>;
public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<any> { public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, groupId?: number, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<any> {
if (id === null || id === undefined) { if (id === null || id === undefined) {
throw new Error('Required parameter id was null or undefined when calling getDiscussionEndpoint.'); throw new Error('Required parameter id was null or undefined when calling getDiscussionEndpoint.');
} }
@@ -373,6 +376,15 @@ export class DiscussionsService extends BaseService {
); );
localVarQueryParameters = this.addToHttpParams(
localVarQueryParameters,
'groupId',
<any>groupId,
QueryParamStyle.Form,
true,
);
let localVarHeaders = this.defaultHeaders; let localVarHeaders = this.defaultHeaders;
const localVarHttpHeaderAcceptSelected: string | undefined = options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([ const localVarHttpHeaderAcceptSelected: string | undefined = options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([
@@ -413,6 +425,122 @@ export class DiscussionsService extends BaseService {
); );
} }
/**
* @endpoint get /API/discussions/{discussionId}/members
* @param discussionId
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress.
* @param options additional options
*/
public getDiscussionMembersEndpoint(discussionId: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<Array<string>>;
public getDiscussionMembersEndpoint(discussionId: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<Array<string>>>;
public getDiscussionMembersEndpoint(discussionId: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<Array<string>>>;
public getDiscussionMembersEndpoint(discussionId: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> {
if (discussionId === null || discussionId === undefined) {
throw new Error('Required parameter discussionId was null or undefined when calling getDiscussionMembersEndpoint.');
}
let localVarHeaders = this.defaultHeaders;
// authentication (JWTBearerAuth) required
localVarHeaders = this.configuration.addCredentialToHeaders('JWTBearerAuth', 'Authorization', localVarHeaders, 'Bearer ');
const localVarHttpHeaderAcceptSelected: string | undefined = options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([
'application/json'
]);
if (localVarHttpHeaderAcceptSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
}
const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();
const localVarTransferCache: boolean = options?.transferCache ?? true;
let responseType_: 'text' | 'json' | 'blob' = 'json';
if (localVarHttpHeaderAcceptSelected) {
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
responseType_ = 'text';
} else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
responseType_ = 'json';
} else {
responseType_ = 'blob';
}
}
let localVarPath = `/API/discussions/${this.configuration.encodeParam({name: "discussionId", value: discussionId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}/members`;
const { basePath, withCredentials } = this.configuration;
return this.httpClient.request<Array<string>>('get', `${basePath}${localVarPath}`,
{
context: localVarHttpContext,
responseType: <any>responseType_,
...(withCredentials ? { withCredentials } : {}),
headers: localVarHeaders,
observe: observe,
...(localVarTransferCache !== undefined ? { transferCache: localVarTransferCache } : {}),
reportProgress: reportProgress
}
);
}
/**
* @endpoint get /API/discussions/{discussionId}/members/roles
* @param discussionId
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress.
* @param options additional options
*/
public getDiscussionMembersWithRolesEndpoint(discussionId: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<Array<KnotsEndpointsDiscussionMemberWithRoleDto>>;
public getDiscussionMembersWithRolesEndpoint(discussionId: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<Array<KnotsEndpointsDiscussionMemberWithRoleDto>>>;
public getDiscussionMembersWithRolesEndpoint(discussionId: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<Array<KnotsEndpointsDiscussionMemberWithRoleDto>>>;
public getDiscussionMembersWithRolesEndpoint(discussionId: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> {
if (discussionId === null || discussionId === undefined) {
throw new Error('Required parameter discussionId was null or undefined when calling getDiscussionMembersWithRolesEndpoint.');
}
let localVarHeaders = this.defaultHeaders;
// authentication (JWTBearerAuth) required
localVarHeaders = this.configuration.addCredentialToHeaders('JWTBearerAuth', 'Authorization', localVarHeaders, 'Bearer ');
const localVarHttpHeaderAcceptSelected: string | undefined = options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([
'application/json'
]);
if (localVarHttpHeaderAcceptSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
}
const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();
const localVarTransferCache: boolean = options?.transferCache ?? true;
let responseType_: 'text' | 'json' | 'blob' = 'json';
if (localVarHttpHeaderAcceptSelected) {
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
responseType_ = 'text';
} else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
responseType_ = 'json';
} else {
responseType_ = 'blob';
}
}
let localVarPath = `/API/discussions/${this.configuration.encodeParam({name: "discussionId", value: discussionId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}/members/roles`;
const { basePath, withCredentials } = this.configuration;
return this.httpClient.request<Array<KnotsEndpointsDiscussionMemberWithRoleDto>>('get', `${basePath}${localVarPath}`,
{
context: localVarHttpContext,
responseType: <any>responseType_,
...(withCredentials ? { withCredentials } : {}),
headers: localVarHeaders,
observe: observe,
...(localVarTransferCache !== undefined ? { transferCache: localVarTransferCache } : {}),
reportProgress: reportProgress
}
);
}
/** /**
* @endpoint get /API/discussions/{discussionId}/messages * @endpoint get /API/discussions/{discussionId}/messages
* @param discussionId * @param discussionId
@@ -28,6 +28,8 @@ import { KnotsDTOGroupUpdateGroupMembersAmountDto } from '../model/knots-dto-gro
import { KnotsDTOGroupUpdateGroupNameDto } from '../model/knots-dto-group-update-group-name-dto'; import { KnotsDTOGroupUpdateGroupNameDto } from '../model/knots-dto-group-update-group-name-dto';
// @ts-ignore // @ts-ignore
import { KnotsDTOGroupUpdateGroupProfilePictureDto } from '../model/knots-dto-group-update-group-profile-picture-dto'; import { KnotsDTOGroupUpdateGroupProfilePictureDto } from '../model/knots-dto-group-update-group-profile-picture-dto';
// @ts-ignore
import { KnotsEndpointsRoleAssignRoleRequest } from '../model/knots-endpoints-role-assign-role-request';
// @ts-ignore // @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables';
@@ -45,6 +47,81 @@ export class GroupsService extends BaseService {
super(basePath, configuration); super(basePath, configuration);
} }
/**
* @endpoint post /API/groups/{groupId}/members/{userId}/role
* @param groupId
* @param userId
* @param knotsEndpointsRoleAssignRoleRequest
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress.
* @param options additional options
*/
public assignRoleEndpoint(groupId: string, userId: string, knotsEndpointsRoleAssignRoleRequest: KnotsEndpointsRoleAssignRoleRequest, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<any>;
public assignRoleEndpoint(groupId: string, userId: string, knotsEndpointsRoleAssignRoleRequest: KnotsEndpointsRoleAssignRoleRequest, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<any>>;
public assignRoleEndpoint(groupId: string, userId: string, knotsEndpointsRoleAssignRoleRequest: KnotsEndpointsRoleAssignRoleRequest, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<any>>;
public assignRoleEndpoint(groupId: string, userId: string, knotsEndpointsRoleAssignRoleRequest: KnotsEndpointsRoleAssignRoleRequest, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<any> {
if (groupId === null || groupId === undefined) {
throw new Error('Required parameter groupId was null or undefined when calling assignRoleEndpoint.');
}
if (userId === null || userId === undefined) {
throw new Error('Required parameter userId was null or undefined when calling assignRoleEndpoint.');
}
if (knotsEndpointsRoleAssignRoleRequest === null || knotsEndpointsRoleAssignRoleRequest === undefined) {
throw new Error('Required parameter knotsEndpointsRoleAssignRoleRequest was null or undefined when calling assignRoleEndpoint.');
}
let localVarHeaders = this.defaultHeaders;
// authentication (JWTBearerAuth) required
localVarHeaders = this.configuration.addCredentialToHeaders('JWTBearerAuth', 'Authorization', localVarHeaders, 'Bearer ');
const localVarHttpHeaderAcceptSelected: string | undefined = options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([
]);
if (localVarHttpHeaderAcceptSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
}
const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();
const localVarTransferCache: boolean = options?.transferCache ?? true;
// to determine the Content-Type header
const consumes: string[] = [
'application/json'
];
const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
if (httpContentTypeSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
}
let responseType_: 'text' | 'json' | 'blob' = 'json';
if (localVarHttpHeaderAcceptSelected) {
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
responseType_ = 'text';
} else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
responseType_ = 'json';
} else {
responseType_ = 'blob';
}
}
let localVarPath = `/API/groups/${this.configuration.encodeParam({name: "groupId", value: groupId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}/members/${this.configuration.encodeParam({name: "userId", value: userId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}/role`;
const { basePath, withCredentials } = this.configuration;
return this.httpClient.request<any>('post', `${basePath}${localVarPath}`,
{
context: localVarHttpContext,
body: knotsEndpointsRoleAssignRoleRequest,
responseType: <any>responseType_,
...(withCredentials ? { withCredentials } : {}),
headers: localVarHeaders,
observe: observe,
...(localVarTransferCache !== undefined ? { transferCache: localVarTransferCache } : {}),
reportProgress: reportProgress
}
);
}
/** /**
* @endpoint post /API/groups * @endpoint post /API/groups
* @param knotsDTOGroupCreateGroupDto * @param knotsDTOGroupCreateGroupDto
+17 -12
View File
@@ -19,9 +19,11 @@ import { OpenApiHttpParams, QueryParamStyle } from '../query.params';
// @ts-ignore // @ts-ignore
import { FastEndpointsErrorResponse } from '../model/fast-endpoints-error-response'; import { FastEndpointsErrorResponse } from '../model/fast-endpoints-error-response';
// @ts-ignore // @ts-ignore
import { KnotsDTORoleCreateRoleDto } from '../model/knots-dto-role-create-role-dto';
// @ts-ignore
import { KnotsDTORoleDeleteRoleDto } from '../model/knots-dto-role-delete-role-dto'; import { KnotsDTORoleDeleteRoleDto } from '../model/knots-dto-role-delete-role-dto';
// @ts-ignore
import { KnotsEndpointsRoleCreateRoleRequest } from '../model/knots-endpoints-role-create-role-request';
// @ts-ignore
import { KnotsEndpointsRoleRoleDto } from '../model/knots-endpoints-role-role-dto';
// @ts-ignore // @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables';
@@ -41,23 +43,26 @@ export class RolesService extends BaseService {
/** /**
* @endpoint post /API/roles * @endpoint post /API/roles
* @param knotsDTORoleCreateRoleDto * @param knotsEndpointsRoleCreateRoleRequest
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress. * @param reportProgress flag to report request and response progress.
* @param options additional options * @param options additional options
*/ */
public createRoleEndpoint(knotsDTORoleCreateRoleDto: KnotsDTORoleCreateRoleDto, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/problem+json', context?: HttpContext, transferCache?: boolean}): Observable<any>; public createRoleEndpoint(knotsEndpointsRoleCreateRoleRequest: KnotsEndpointsRoleCreateRoleRequest, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<KnotsEndpointsRoleRoleDto>;
public createRoleEndpoint(knotsDTORoleCreateRoleDto: KnotsDTORoleCreateRoleDto, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/problem+json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<any>>; public createRoleEndpoint(knotsEndpointsRoleCreateRoleRequest: KnotsEndpointsRoleCreateRoleRequest, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<KnotsEndpointsRoleRoleDto>>;
public createRoleEndpoint(knotsDTORoleCreateRoleDto: KnotsDTORoleCreateRoleDto, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/problem+json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<any>>; public createRoleEndpoint(knotsEndpointsRoleCreateRoleRequest: KnotsEndpointsRoleCreateRoleRequest, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<KnotsEndpointsRoleRoleDto>>;
public createRoleEndpoint(knotsDTORoleCreateRoleDto: KnotsDTORoleCreateRoleDto, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/problem+json', context?: HttpContext, transferCache?: boolean}): Observable<any> { public createRoleEndpoint(knotsEndpointsRoleCreateRoleRequest: KnotsEndpointsRoleCreateRoleRequest, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> {
if (knotsDTORoleCreateRoleDto === null || knotsDTORoleCreateRoleDto === undefined) { if (knotsEndpointsRoleCreateRoleRequest === null || knotsEndpointsRoleCreateRoleRequest === undefined) {
throw new Error('Required parameter knotsDTORoleCreateRoleDto was null or undefined when calling createRoleEndpoint.'); throw new Error('Required parameter knotsEndpointsRoleCreateRoleRequest was null or undefined when calling createRoleEndpoint.');
} }
let localVarHeaders = this.defaultHeaders; let localVarHeaders = this.defaultHeaders;
// authentication (JWTBearerAuth) required
localVarHeaders = this.configuration.addCredentialToHeaders('JWTBearerAuth', 'Authorization', localVarHeaders, 'Bearer ');
const localVarHttpHeaderAcceptSelected: string | undefined = options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([ const localVarHttpHeaderAcceptSelected: string | undefined = options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([
'application/problem+json' 'application/json'
]); ]);
if (localVarHttpHeaderAcceptSelected !== undefined) { if (localVarHttpHeaderAcceptSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
@@ -90,10 +95,10 @@ export class RolesService extends BaseService {
let localVarPath = `/API/roles`; let localVarPath = `/API/roles`;
const { basePath, withCredentials } = this.configuration; const { basePath, withCredentials } = this.configuration;
return this.httpClient.request<any>('post', `${basePath}${localVarPath}`, return this.httpClient.request<KnotsEndpointsRoleRoleDto>('post', `${basePath}${localVarPath}`,
{ {
context: localVarHttpContext, context: localVarHttpContext,
body: knotsDTORoleCreateRoleDto, body: knotsEndpointsRoleCreateRoleRequest,
responseType: <any>responseType_, responseType: <any>responseType_,
...(withCredentials ? { withCredentials } : {}), ...(withCredentials ? { withCredentials } : {}),
headers: localVarHeaders, headers: localVarHeaders,
@@ -0,0 +1,18 @@
/**
* Knots
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
export interface KnotsEndpointsDiscussionMemberWithRoleDto {
userId?: number;
username?: string;
roleId?: number | null;
roleLibelle?: string | null;
}
@@ -9,7 +9,7 @@
*/ */
export interface KnotsDTORoleCreateRoleDto { export interface KnotsEndpointsRoleAssignRoleRequest {
libelle: string; roleId?: number;
} }
@@ -0,0 +1,15 @@
/**
* Knots
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
export interface KnotsEndpointsRoleCreateRoleRequest {
libelle?: string;
}
@@ -0,0 +1,16 @@
/**
* Knots
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
export interface KnotsEndpointsRoleRoleDto {
id?: number;
libelle?: string;
}
+4 -1
View File
@@ -11,7 +11,6 @@ export * from './knots-dto-key-delete-key-dto';
export * from './knots-dto-message-create-message-dto'; export * from './knots-dto-message-create-message-dto';
export * from './knots-dto-message-delete-message-dto'; export * from './knots-dto-message-delete-message-dto';
export * from './knots-dto-message-get-message-details-dto'; export * from './knots-dto-message-get-message-details-dto';
export * from './knots-dto-role-create-role-dto';
export * from './knots-dto-role-delete-role-dto'; export * from './knots-dto-role-delete-role-dto';
export * from './knots-dto-user-create-user-dto'; export * from './knots-dto-user-create-user-dto';
export * from './knots-dto-user-delete-user-dto'; export * from './knots-dto-user-delete-user-dto';
@@ -25,3 +24,7 @@ export * from './knots-dto-user-update-user-profile-picture-dto';
export * from './knots-dto-user-update-username-dto'; export * from './knots-dto-user-update-username-dto';
export * from './knots-endpoints-discussion-create-group-discussion-request'; export * from './knots-endpoints-discussion-create-group-discussion-request';
export * from './knots-endpoints-discussion-create-private-discussion-request'; export * from './knots-endpoints-discussion-create-private-discussion-request';
export * from './knots-endpoints-discussion-member-with-role-dto';
export * from './knots-endpoints-role-assign-role-request';
export * from './knots-endpoints-role-create-role-request';
export * from './knots-endpoints-role-role-dto';