hngprojects / hng_boilerplate_golang_web

Apache License 2.0
77 stars 50 forks source link

[FEAT]: Create Organization Invitation Link -Backend #108

Closed Micah-Shallom closed 2 months ago

Micah-Shallom commented 3 months ago

Description

Create an API endpoint to generate invitation links for inviting users to join an organization. This endpoint will validate the input data, ensure proper authorization, and generate a unique invitation link for the specified organization.

Acceptance Criteria

API Endpoint Implementation:

Authentication and Authorization:

Data Validation and Sanitization:

Invitation Link Generation:

Email Sending:

Response:

Request Example:

POST /api/v1/invite/create

{
  "organizationId": "string",
  "email": "string"
}

Successful Response:

{
  "message": "Invitation link created and sent successfully",
  "data": {
    "invitationLink": "string"
  },
  "status_code": 201
}

Error Response:

{
  "message": "Failed to create invitation link",
  "errors": [
    "Invalid organization ID",
    "Email format is incorrect",
    "User is not authorized to create invitation link for this organization"
  ],
  "status_code": 400
}

Purpose

Provides a backend service to generate unique invitation links for inviting users to join an organization, ensuring the data is valid, the user is authorized, the link is stored with an expiration date, and optionally sending the invitation link via email.

Requirements

Expected Outcome

The API endpoint allows administrators to generate invitation links for inviting users to join an organization, ensuring the links are valid, stored with expiration dates, and optionally emailed to the intended recipient.

Status Codes

Testing

Additional Considerations:

Micah-Shallom commented 3 months ago

Approved Issue - https://github.com/hngprojects/hng_boilerplate_nestjs/issues/113#issue-2413269113

Micah-Shallom commented 3 months ago

I added some logical enhancements and modifications to the ticket to improve security, usability, and functionality

These modifications will ensure that the invitation link creation process is secure, only authorized users can create links, and the system is robust against common issues such as invalid data and unauthorized access.

@NwokoyeChigozie