Merge branch 'feature/fix-registration' into 'master'

Feature/fix registration

See merge request framasoft/mobilizon!37
This commit is contained in:
Thomas Citharel 2018-12-28 16:42:53 +01:00
commit b5ac788227
6 changed files with 54 additions and 64 deletions

View file

@ -92,10 +92,7 @@
};
rules = {
required: value => !!value || 'Required.',
email: (value) => {
const pattern = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return pattern.test(value) || 'Invalid e-mail.';
},
email: (value) => value.includes('@') || 'Invalid e-mail.',
};
user: any;
@ -110,24 +107,25 @@
this.credentials.password = this.password;
}
loginAction(e: Event) {
async loginAction(e: Event) {
e.preventDefault();
this.$apollo.mutate({
try {
const result = await this.$apollo.mutate({
mutation: LOGIN,
variables: {
email: this.credentials.email,
password: this.credentials.password,
},
}).then((result) => {
console.log(result)
});
this.saveUserData(result.data);
this.$router.push({ name: 'Home' });
}).catch((e) => {
console.log(e);
} catch (err) {
console.error(err);
this.error.show = true;
this.error.text = e.message;
});
this.error.text = err.message;
}
}
validEmail() {
@ -136,7 +134,6 @@
saveUserData({ login: login }) {
localStorage.setItem(AUTH_USER_ID, login.user.id);
localStorage.setItem(AUTH_USER_ACTOR, JSON.stringify(login.actor));
localStorage.setItem(AUTH_TOKEN, login.token);
}
}

View file

@ -121,12 +121,9 @@
},
};
rules = {
password_length: value => value.length > 6 || 'Password must be at least 6 caracters long',
password_length: value => value.length > 6 || 'Password must be at least 6 characters long',
required: value => !!value || 'Required.',
email: (value) => {
const pattern = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return pattern.test(value) || 'Invalid e-mail.';
},
email: (value: string) => value.includes('@') || 'Invalid e-mail.',
};
resetState() {
@ -154,20 +151,21 @@
return this.rules.email(this.email) === true ? 'v-gravatar' : 'avatar';
}
submit() {
this.$apollo.mutate({
async submit() {
try {
await this.$apollo.mutate({
mutation: CREATE_USER,
variables: {
email: this.email,
password: this.password,
username: this.username,
},
}).then((data) => {
console.log(data);
this.validationSent = true;
}).catch((error) => {
console.error(error);
});
this.validationSent = true;
} catch (error) {
console.error(error);
}
}
};
</script>

View file

@ -19,7 +19,7 @@
<script lang="ts">
import { VALIDATE_USER } from '@/graphql/user';
import { Component, Prop, Vue } from 'vue-property-decorator';
import { AUTH_TOKEN, AUTH_USER_ACTOR, AUTH_USER_ID } from '@/constants';
import { AUTH_TOKEN, AUTH_USER_ID } from '@/constants';
@Component
export default class Validate extends Vue {
@ -32,27 +32,27 @@
this.validateAction();
}
validateAction() {
this.$apollo.mutate({
async validateAction() {
try {
const data = await this.$apollo.mutate({
mutation: VALIDATE_USER,
variables: {
token: this.token,
},
}).then((data) => {
this.loading = false;
console.log(data);
});
this.saveUserData(data.data);
this.$router.push({ name: 'Home' });
}).catch((error) => {
this.loading = false;
console.log(error);
} catch (err) {
console.error(err);
this.failed = true;
});
} finally {
this.loading = false;
}
}
saveUserData({ validateUser: login }) {
localStorage.setItem(AUTH_USER_ID, login.user.id);
localStorage.setItem(AUTH_USER_ACTOR, JSON.stringify(login.actor));
localStorage.setItem(AUTH_TOKEN, login.token);
}

View file

@ -6,10 +6,6 @@ mutation Login($email: String!, $password: String!) {
token,
user {
id,
},
actor {
avatarUrl,
preferredUsername,
}
},
}

View file

@ -3,13 +3,10 @@ import gql from 'graphql-tag';
export const CREATE_USER = gql`
mutation CreateUser($email: String!, $username: String!, $password: String!) {
createUser(email: $email, username: $username, password: $password) {
preferredUsername,
user {
email,
confirmationSentAt
}
}
}
`;
export const VALIDATE_USER = gql`
@ -18,10 +15,6 @@ mutation ValidateUser($token: String!) {
token,
user {
id,
},
actor {
avatarUrl,
preferredUsername,
}
}
}

View file

@ -61,7 +61,13 @@ defmodule Mobilizon.Actors do
"""
@spec get_actor_for_user(Mobilizon.Actors.User.t()) :: Mobilizon.Actors.Actor.t()
def get_actor_for_user(%Mobilizon.Actors.User{} = user) do
case Repo.one(from(a in Actor, join: u in User, on: u.default_actor_id == a.id)) do
case Repo.one(
from(a in Actor,
join: u in User,
on: u.default_actor_id == a.id,
where: u.id == ^user.id
)
) do
nil -> get_actors_for_user(user) |> hd
actor -> actor
end