Skip to content

Instantly share code, notes, and snippets.

View sle-c's full-sized avatar
🏠
Working from home

Si Le sle-c

🏠
Working from home
View GitHub Profile
@sle-c
sle-c / activity_subscription.js
Last active June 10, 2020 00:13
Do something if initial load
function handleActivitySubscription(snapshot, counter) {
const initialLoad = counter === 1;
snapshot.docChanges().forEach(function(change) {
if (initialLoad) {
doSomething(change.doc.data());
} else {
doSomethingElse(change.doc.data());
}
});
@sle-c
sle-c / create_apps_table.sql
Last active April 1, 2019 02:16
JWT Auth with Golang
CREATE TABLE apps (
id SERIAL PRIMARY KEY,
name character varying,
public_key character varying,
encrypted_secret_key character varying,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL
);
-- enhance query performance and enforce uniqueness
CREATE UNIQUE INDEX apps_public_key ON apps(public_key text_ops);
@sle-c
sle-c / create_random_key.go
Last active April 1, 2019 00:48
Create random key string
import (
"crypto/rand"
)
func NewRandomKey() []byte {
key := make([]byte, 32)
if _, err := rand.Read(key); err != nil {
// really, what are you gonna do if randomness failed?
panic(err)
}
@sle-c
sle-c / decrypt.go
Last active April 1, 2019 02:26
Decrypt text using AES256 GCM in golang
import (
"crypto/aes"
"crypto/cipher"
"crypto/rand"
"encoding/hex"
"os"
)
// Decrypt will return the original value of the encrypted string
func Decrypt(encryptedKey []byte) ([]byte, error) {
@sle-c
sle-c / encrypt.go
Created April 1, 2019 02:26
Encrypt text using AES256 GCM in golang
import (
"crypto/aes"
"crypto/cipher"
"crypto/rand"
"encoding/hex"
"os"
)
// Encrypt will encrypt a raw string to
// an encrypted value
@sle-c
sle-c / root.go
Last active April 15, 2019 04:57
package cmd
import (
"fmt"
"os"
"github.com/spf13/cobra"
)
var rootCmd = &cobra.Command{
@sle-c
sle-c / key.go
Created April 16, 2019 02:55
Command to generate a random 32 bits key and print to the screen
package cmd
import (
"fmt"
"github.com/omnisyle/goliauth"
"github.com/spf13/cobra"
)
func keyCmd() *cobra.Command {
@sle-c
sle-c / handlers.go
Created April 16, 2019 04:24
Handlers for app command to create and get app
func createApp(cmd *cobra.Command, args []string) {
appName := args[0]
keyPair := app.CreateApp(appName, db)
printResult(keyPair)
}
func getApp(cmd *cobra.Command, args []string) {
publicKey := args[0]
keyPair := app.GetApp(publicKey, db)
printResult(keyPair)
@sle-c
sle-c / create.go
Created April 16, 2019 04:40
Service to create an App object in database
package app
import (
"fmt"
"github.com/omnisyle/goliauth"
)
func CreateApp(name, dbURL string) *App {
publicKey := goliauth.NewRandomKey()
@sle-c
sle-c / get.go
Created April 16, 2019 04:51
A function to get an App object given a public key
package app
import (
"encoding/hex"
"fmt"
"github.com/omnisyle/goliauth"
)
func GetApp(publicKey, dbURL string) *App {