typescript/kuzzle + elastic search

커즐(kuzzle) 활용 예시 4(로그아웃/회원탈퇴) v5.x

노래하는 마케터 2019. 2. 25. 18:26
728x90


import { Component, OnInit } from '@angular/core';
import { NavController, AlertController } from '@ionic/angular';
import { Storage } from '@ionic/storage';
import Kuzzle from 'kuzzle-sdk/dist/kuzzle.js';
@Component({
selector: 'app-mypage',
templateUrl: './mypage.page.html',
styleUrls: ['./mypage.page.scss'],
})
export class MypagePage implements OnInit {
kuzzle: any;
userId: any;
userPwd: any;
userNickname: any;
constructor(private storage: Storage, private navCtrl: NavController, private alertCtrl: AlertController) {
this.kuzzle = new Kuzzle('192.168.0.26', this.kuzzle_callback.bind(this));
this.storage.get('userid').then(userid => {
this.userId = userid;
});
this.storage.get('userpwd').then(userpwd => {
this.userPwd = userpwd;
});
this.storage.get('usernickname').then(usernickname => {
this.userNickname = usernickname;
});
}

kuzzle_callback (err, res) {
console.log(err);
this.kuzzle.login('local', {username: 'kuzzle id', password: 'kuzzle password'}, '로그인 유지 시간',
function(error, result) {
this.kuzzle.setJwtToken(JSON.stringify(result.jwt));
this.storage.set('jwt', JSON.stringify(result.jwt));
});
}

ngOnInit() {
}
goHome() {
this.navCtrl.navigateRoot('login');
}
kuzzleLogout() {
this.kuzzle.logout(function (err, res) {
if (res) {
this.goHome();
this.kuzzle.unsetJwtToken();
this.storage.set('jwt', null);
this.storage.set('userid', null);
this.storage.set('userpwd', null);
}
}.bind(this));
}
deleteUser() {
const args = {
'index': 'index_name',
'collection': 'collection_name',
'controller': 'document',
'action': 'deleteByQuery'
},
query = {
body: {
'query': {
'bool': {
'must': [{
'match': {
'USER_ID': this.userId
}
},
{
'match': {
'USER_PASSWORD': this.userPwd
}
}
]
}
}
}
};

// Using callbacks (NodeJS or Web Browser)
this.kuzzle.query(args, query, function (err, res) {
this.kuzzle.unsetJwtToken();
});
this.goHome();
this.kuzzle.unsetJwtToken();
this.storage.set('jwt', null);
this.storage.set('userid', null);
this.storage.set('userpwd', null);
}
}


//html
<ion-content padding>
<div style="text-align: center; padding: auto; margin: auto;">
<ion-list style="text-align: center; padding: auto; margin: auto;">
<ion-item style="margin-left: auto; margin-right: auto; width: auto; height: auto;">
<img src="./../../assets/imgs/human2.png" style="width: 160px;height: 120px;margin:auto;padding:auto;" />
<br />
<ion-label style="font-size: 1em; font-weight: 500; color:black;">{{userNickname}}님</ion-label>
</ion-item>
<ion-item style="margin-left: auto; margin-right: auto; width: auto; height: auto;">
<ion-button (click)="kuzzleLogout()" color="button" expand="block" shape="round" size="large" class="bt">
로그아웃</ion-button>
<ion-button (click)="deleteUser()" color="button" expand="block" shape="round" size="large" class="bt">
회원탈퇴</ion-button>
</ion-item>
</ion-list>
</div>
</ion-content>



728x90