Team functionality (#459)

* add api enpoints for adding, removing, updating user to workspace and leaving workspace

* feat: updates client site workspace settings

* refactor and add domain setting ui in modal

* move workspace user functionality to its own component

* adds tests

* fix linting

* updates select input to FlatSelectInput

* moves workspace user role edit to seperated component

* move user adding to its own component

* adds check to usure users exist before checking is admin

* fix loading users

* feat: invite user to team functionality

* fix token coulmn

* fix self host mode changes

* tests for  user invite

* Refactor back-end

* Rename variables

* Improve some styling elements + refactor workspace settings

* More styling

* More UI polishing

* More UI fixes

* PHP linting

* Implemented most of the logic for team-functionnality

* Fix user avatar URL

* WIP remove users on cancellation

* Finished pricing for team functionality

* Fix tests

* Fix linting

* Added pricing_enabled helper

* Fix pricing_enabled shortcut

* Debug CI

* Disable pricing when testing

---------

Co-authored-by: LL-Etiane <lukongleinyuyetiane@gmail.com>
Co-authored-by: Lukong Etiane <83535251+LL-Etiane@users.noreply.github.com>
Co-authored-by: Julien Nahum <julien@nahum.net>
This commit is contained in:
Favour Olayinka
2024-07-04 16:21:36 +01:00
committed by GitHub
parent 383fff7b2c
commit 90ff91b1e9
64 changed files with 2503 additions and 596 deletions

View File

@@ -20,6 +20,7 @@
:form="form"
label="Email"
:required="true"
:disabled="disableEmail"
placeholder="Your email address"
/>
@@ -135,6 +136,7 @@ export default {
agree_terms: false,
appsumo_license: null,
}),
disableEmail:false
}),
computed: {
@@ -167,12 +169,26 @@ export default {
) {
this.form.appsumo_license = this.$route.query.appsumo_license
}
if (this.$route.query?.invite_token) {
if (this.$route.query?.email) {
this.form.email = this.$route.query?.email
this.disableEmail = true
}
this.form.invite_token = this.$route.query?.invite_token
}
},
methods: {
async register() {
// Register the user.
const data = await this.form.post("/register")
let data
try {
// Register the user.
data = await this.form.post("/register")
} catch (err) {
useAlert().error(err.response?._data?.message)
return false
}
// Log in the user.
const tokenData = await this.form.post("/login")
@@ -216,7 +232,13 @@ export default {
if (this.isQuick) {
this.$emit("afterQuickLogin")
} else {
this.$router.push({name: "forms-create"})
// If is invite just redirect to home
if (this.form.invite_token) {
useAlert().success("You have successfully accepted the invite and joined this workspace.")
this.$router.push({name: "home"})
} else {
this.$router.push({name: "forms-create"})
}
}
},
},