Skip to content

Instantly share code, notes, and snippets.

View sairamkrish's full-sized avatar

Sairam Krish sairamkrish

View GitHub Profile
@sairamkrish
sairamkrish / Dockerfile
Created March 6, 2019 12:05
Dockerfile for NodeJS application
FROM node:10.15.2-alpine
WORKDIR /home/app
EXPOSE 3000 3000
ADD yarn.lock package.json ./
RUN yarn install
COPY . .
ENTRYPOINT [ "yarn","start" ]
@sairamkrish
sairamkrish / distance_between_two_geo_coordinates
Created January 23, 2019 12:15
Distance between two geo points
'''
Used for testing purpose, during development. Not for production
'''
def distance_between_two_geo_coordinates(start_lat, start_long, end_lat, end_long):
from math import radians, sin, cos, acos
print("Input coordinates of two points:")
slat = radians(start_lat)
slon = radians(start_long)
elat = radians(end_lat)
@sairamkrish
sairamkrish / object_to_dict_recursive.py
Last active August 24, 2023 23:25
Python object to dictionary - recursively convert
'''
Generic object to dict converter. Recursively convert.
Useful for testing and asserting objects with expectation.
'''
def todict(obj, classkey=None):
if isinstance(obj, dict):
data = {}
for (k, v) in obj.items():
data[k] = todict(v, classkey)
@sairamkrish
sairamkrish / docker-compose.yml
Created August 29, 2018 19:06
Overriding html templates inside superset
version: '3.6'
services:
superset:
image: amancevice/superset:0.25.6
ports:
- "8088:8088"
volumes:
- ./superset-conf/config:/etc/superset
- ./superset-conf/templates/appbuilder/navbar.html:/usr/local/lib/python3.5/dist-packages/superset/templates/appbuilder/navbar.html
@sairamkrish
sairamkrish / views.py
Created August 9, 2018 19:38
Sample django rest endpoint
class InventoryViewSet(viewsets.ModelViewSet):
keycloak_scopes = {
'GET': 'invetory:view',
'POST': 'inventory:add',
'PUT': 'inventory:update',
'DELETE': 'inventory:delete'
}
serializer_class = InventorySerializer
queryset = Inventory.objects.all().order_by('inventory_id')
filter_backends = (filters.DjangoFilterBackend, )
@sairamkrish
sairamkrish / middleware.py
Created August 9, 2018 19:32
Django middleware for Keycloak integration
# -*- coding: utf-8 -*-
#
# Copyright (C) 2017 Marcos Pereira <[email protected]>
# Modified by Sairam Krish <[email protected]>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
@sairamkrish
sairamkrish / SomeComponent.ts
Created August 9, 2018 18:26
keycloak - angular integration - fetching user attributes example
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { KeycloakService } from 'keycloak-angular';
@Component({
....
})
export class SomeComponent implements OnInit {
constructor(protected router: Router,
@sairamkrish
sairamkrish / app.authguard.ts
Created August 9, 2018 18:00
keycloak - angular integration - authguard example
import { Injectable } from '@angular/core';
import { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { KeycloakService, KeycloakAuthGuard } from 'keycloak-angular';
@Injectable()
export class AppAuthGuard extends KeycloakAuthGuard {
constructor(protected router: Router, protected keycloakAngular: KeycloakService) {
super(router, keycloakAngular);
}
@sairamkrish
sairamkrish / app-routing.module.ts
Created August 9, 2018 17:54
Keycloak - angular - example routing
import { NgModule } from '@angular/core';
import { Routes, RouterModule, PreloadAllModules } from '@angular/router';
import { AppAuthGuard } from './app.authguard';
...
const appRoutes: Routes = [
{
path: 'some-path-only-super-user-can-access',
loadChildren: () => SomeModule ,
canActivate: [AppAuthGuard],
@sairamkrish
sairamkrish / environment.ts
Created August 9, 2018 17:46
Keycloak Angular environment.ts example
import { KeycloakConfig } from 'keycloak-angular';
// Add here your keycloak setup infos
let keycloakConfig: KeycloakConfig = {
url: 'http://KEYCLOAK-IP:8088/auth',
realm: 'your-realm-name',
clientId: 'your-client-id',
"credentials": {
"secret": "your-client-secret"
}