Skip to content

Instantly share code, notes, and snippets.

View pranotobudi's full-sized avatar

pranoto budi pranotobudi

View GitHub Profile
@pranotobudi
pranotobudi / login.js
Created November 12, 2021 13:56
onSubmit func handler part12
function onSubmit({ username, password }) {
return userService.login(username, password)
.then((response) => {
userService.setUserValue(response.data);
router.push('/');
})
.catch(function(error){
console.log("ERROR HERE: "+error)
setError('apiError', { message: "User Authentication failed" });
});
@pranotobudi
pranotobudi / user.service.js
Created November 12, 2021 13:54
login function part12
export const userService = {
userData: {},
register,
login,
};
function login(username, password) {
return fetchWrapper.post(`/api/v1/login`, { username, password });
}
@pranotobudi
pranotobudi / user_handler.go
Created November 10, 2021 07:20
user login POST method part11
package main
import (
"fmt"
"log"
"net/http"
"github.com/joho/godotenv"
"github.com/labstack/echo/v4"
"github.com/pranotobudi/go-simple-ecommerce/api/products"
@pranotobudi
pranotobudi / user_handler.go
Created November 10, 2021 07:19
generate jwt part11
func (s *userHandler) CreateAccessToken() (string, error) {
claims := jwt.StandardClaims{
ExpiresAt: time.Now().Add(time.Hour * 3).Unix(),
IssuedAt: time.Now().Unix(),
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
signedKey, err := token.SignedString([]byte(os.Getenv("JWT_SECRET_KEY")))
if err != nil {
return signedKey, err
@pranotobudi
pranotobudi / user_handler.go
Created November 10, 2021 07:18
auth user part11
func (h *userHandler) AuthUser(req UserLoginRequest) (*User, error) {
username := req.Username
password := req.Password
fmt.Println("AUTHUSER CALLED, username: ", username, " password: ", password)
//check Author Table
user, err := h.repository.GetUserByUsername(username)
if err != nil {
return nil, fmt.Errorf("username is not registered")
}
@pranotobudi
pranotobudi / user_handler.go
Created November 10, 2021 07:17
User Login part11
func (h *userHandler) UserLogin(c echo.Context) error {
// Input Binding
userLogin := UserLoginRequest{}
if err := c.Bind(&userLogin); err != nil {
return api.ResponseErrorFormatter(c, err)
}
// Process Input
authUser, err := h.AuthUser(userLogin)
fmt.Println("We're IN HERE: USERLOGIN INSIDE: authUser: ", authUser)
@pranotobudi
pranotobudi / user_handler.go
Created November 10, 2021 07:12
request response - part11
type UserLoginRequest struct {
Username string `json:"username"`
Password string `json:"password"`
}
type UserLoginResponse struct {
ID uint `json:"id"`
Username string `json:"username"`
Email string `json:"email"`
AuthToken string `json:"auth_token"`
@pranotobudi
pranotobudi / next.config.js
Created November 8, 2021 14:56
redirect relative path to external path part10
module.exports = {
images: {
domains: ["localhost", "fakestoreapi.com"]
},
reactStrictMode: true,
async rewrites() {
return [
{
source: '/api/v1/:path*',
destination: 'http://localhost:8080/api/v1/:path*',
@pranotobudi
pranotobudi / fetch-wrappers.js
Created November 8, 2021 14:55
fetch wrappers part10
import getConfig from 'next/config';
import { userService } from 'pages/services/user.service';
const { publicRuntimeConfig } = getConfig();
export const fetchWrapper = {
get,
post,
};
@pranotobudi
pranotobudi / user.service.js
Created November 8, 2021 14:54
user service part10
import { BehaviorSubject } from 'rxjs';
import { fetchWrapper } from 'helpers/fetch-wrappers';
const userSubject = new BehaviorSubject(process.browser && JSON.parse(localStorage.getItem('user')));
export const userService = {
user: userSubject.asObservable(),
get userValue () { return userSubject.value },
register,