stitch-ui
Version:
59 lines (51 loc) • 1.31 kB
JavaScript
import React from "react"; // eslint-disable-line no-unused-vars
import { Map } from "immutable";
import FontAwesome from "react-fontawesome";
const ProviderDisplayNames = {
"oauth2/facebook": "Facebook",
"oauth2/google": "Google",
"local/userpass": "Username/Password",
"api/key": "API Key",
"anon/user": "Anonymous",
"custom/token": "Custom"
};
export class User {
constructor(user) {
this.user = user;
}
getId() {
return this.user._id; // eslint-disable-line no-underscore-dangle
}
getType() {
return this.user.type;
}
getDisplayName() {
const data = this.user.data || {};
const parts = [data.name, data.email].filter(d => d !== undefined);
if (parts.length === 0) {
return "(unknown)";
}
return parts.join(" - ");
}
getProviderDisplayName() {
if (!this.user.identities) {
return "Unknown";
}
return Map(
this.user.identities.map(x => [
ProviderDisplayNames[x.provider] || "Unknown",
x.provider
])
)
.keySeq()
.toArray()
.join(", ");
}
getImage() {
if (!this.user.data || !this.user.data.picture) {
return <FontAwesome name="user-circle" />;
}
return <img src={this.user.data.picture} alt={this.getDisplayName()} />;
}
}
export default User;