Skip to content

Instantly share code, notes, and snippets.

@daviwesley
Created September 24, 2019 23:43
Show Gist options
  • Save daviwesley/6020293618504596e962c9b2cabc6068 to your computer and use it in GitHub Desktop.
Save daviwesley/6020293618504596e962c9b2cabc6068 to your computer and use it in GitHub Desktop.
// imagina que isso aqui é uma classe
const localStorageWrapper = {
set: (key, value) => localStorage.setItem(key, JSON.stringify(value)),
get: (key) => {
const value = localStorage.getItem(key)
return value ? JSON.parse(value) : value
}
}
const NS_USERS = "users";
const NS_LOGGED_USER = "logged_user";
// verifica se um usuário existe no localStorage
export const login = ({ username, password }) => {
const user = (localStorageWrapper.get(NS_USERS) || {})[username];
if (!user || user.password !== password) {
throw new Error("Invalid User/Password");
}
localStorageWrapper.set(NS_LOGGED_USER, user);
return true;
};
// grava um usuário no localStorage
export const register = ({ username, password }) => {
const users = localStorageWrapper.get(NS_USERS) || {};
if (users[username]) {
throw new Error("User already exists");
}
const user = {
username,
password
};
localStorageWrapper.set(NS_USERS, {
...users,
[username]: user
});
return user;
};
export const isLogged = () => !!localStorageWrapper.get(NS_LOGGED_USER);
export const logout = () => localStorageWrapper.set(NS_LOGGED_USER, null);
export const getUser = () =>
isLogged && localStorageWrapper.get(NS_LOGGED_USER);
export default {
register,
login,
isLogged,
getUser
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment