Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- angular.module('app')
- .factory('User', function(
- $http,
- $q,
- $localstorage,
- SERVER,
- CLIENTS,
- $cordovaOauth,
- $state,
- $cordovaFileTransfer
- ) {
- var o = {
- session_id: false,
- name: false,
- username: false,
- since: false,
- image: false,
- reports: false,
- comments: false,
- level: false,
- fbAccessToken: false,
- fbInfo: false,
- isAFacebookUser: false
- };
- o.getStatistics = function() {
- var req = {
- method: 'GET',
- url: SERVER.url + '/api/v1/user/stats',
- headers: {
- 'SessionId': o.session_id
- }
- }
- return $http(req).success(function(data) {
- // merge data
- o.reports = data.user.report_count;
- o.comments = data.user.comment_count;
- o.level = data.user.level;
- });
- }
- o.finishSignup = function(userdata) {
- var params = {
- auth_api: {
- username: userdata.username,
- birthdate: userdata.birthdate,
- gender: userdata.gender
- }
- };
- var req = {
- method: 'POST',
- url: SERVER.url + '/api/v1/auth/finish_signup',
- headers: {
- 'SessionId': o.session_id,
- },
- data: params
- };
- return $http(req).success(function(data) {
- o.setSession(data.session_id, data.user.name, data.user.username, data.user.since, data.user.avatar_url, data.user.report_count, data.user.comment_count, data.user.level);
- });
- }
- o.fbSignIn = function() {
- return $cordovaOauth.facebook(CLIENTS.facebook, ["email"]).then(function(result) {
- o.fbAccessToken = result.access_token;
- }, function(error) {
- var messagere = /flow/
- if (!messagere.test(error)) {
- alert("Error -> " + error);
- }
- console.log("Error -> " + error);
- });
- }
- o.fbGetData = function() {
- return $http.get('https://graph.facebook.com/v2.2/me', { params: { access_token: o.fbAccessToken, fields: 'id,email,name', format: 'json' } }).then(function(response) {
- o.fbInfo = response.data;
- });
- }
- o.fbAuth = function() {
- var params;
- params = {
- auth_api: {
- email: o.fbInfo.email,
- name: o.fbInfo.name,
- picture: 'http://graph.facebook.com/' + o.fbInfo.id + '/picture'
- }
- };
- var req = {
- method: 'POST',
- url: SERVER.url + '/api/v1/auth/signin',
- headers: {
- 'Uid': o.fbInfo.id
- },
- data: params
- };
- return $http(req).success(function(data) {
- o.isAFacebookUser = true;
- o.setSession(data.session_id, data.user.name, data.user.username, data.user.since, data.user.avatar_url, data.user.report_count, data.user.comment_count, data.user.level);
- });
- }
- o.auth = function(username, password, signingUp, signinUpData) {
- var authRoute;
- var params;
- if (signinUpData) {
- params = {
- auth_api: {
- email: signinUpData.email,
- name: signinUpData.name,
- username: signinUpData.username,
- password: signinUpData.password,
- gender: signinUpData.gender,
- birthdate: signinUpData.birthdate
- }
- };
- } else {
- params = {};
- }
- if (signingUp) {
- authRoute = 'signup';
- } else {
- authRoute = 'signin';
- }
- var req = {
- method: 'POST',
- url: SERVER.url + '/api/v1/auth/' + authRoute,
- headers: {
- 'Username': username,
- 'Password': password
- },
- data: params
- };
- return $http(req).success(function(data) {
- o.setSession(data.session_id, data.user.name, data.user.username, data.user.since, data.user.avatar_url, data.user.report_count, data.user.comment_count, data.user.level);
- });
- }
- // Set the session data
- o.setSession = function(session_id, name, username, since, image, reports, comments, level) {
- if (session_id) o.session_id = session_id;
- if (name) o.name = name;
- if (username) o.username = username;
- if (since) o.since = since;
- if (image) {
- var facebookre = /facebook/;
- if (!facebookre.test(image)) {
- o.image = SERVER.url + image;
- } else {
- o.image = image;
- }
- } else {
- o.image = 'img/missing.png';
- }
- o.reports = reports;
- o.comments = comments;
- if (level) o.level = level;
- $localstorage.setObject('user', { session_id: session_id, name: name, username: username, since: since, comments: comments, reports: reports, image: image });
- }
- // Check for available session
- o.checkSession = function() {
- var defer = $q.defer();
- if (o.session_id) {
- // if session is already initialized in the service
- defer.resolve(true);
- } else {
- // detect if there is a session in localstorage from previous use
- // if it is, pull it into service
- var user = $localstorage.getObject('user');
- if (user.session_id) {
- // if there is a user, lets get information from server
- o.setSession(user.session_id, user.name, user.username, user.since, user.image, false, false, false)
- var facebookre = /facebook/
- if (facebookre.test(user.image)) {
- o.isAFacebookUser = true;
- }
- o.getStatistics().then(function() {
- defer.resolve(true);
- }, function(reason) {
- o.destroySession();
- defer.resolve(false);
- });
- } else {
- // no user info in localstorage, reject
- defer.resolve(false);
- }
- }
- return defer.promise;
- }
- o.fbUser = function() {
- return o.isAFacebookUser;
- }
- o.destroySession = function() {
- $localstorage.setObject('user', {});
- o.session_id = false;
- o.name = false;
- o.username = false;
- o.since = false;
- o.image = false;
- o.reports = false;
- o.comments = false;
- o.level = false;
- o.isAFacebookUser = false;
- }
- o.recoverPassword = function(email) {
- var req = {
- method: 'POST',
- url: SERVER.url + '/api/v1/auth/recover',
- data: {
- auth_api: {
- email: email
- }
- }
- };
- return $http(req);
- }
- o.changePicture = function(session_id, newImage) {
- var options = {
- fileKey: 'user_api[image]',
- headers: {
- 'SessionId': session_id
- },
- params: {
- }
- };
- var url = SERVER.url + '/api/v1/user/change_picture';
- return $cordovaFileTransfer.upload(url, newImage, options);
- }
- o.setImage = function(newImage) {
- o.image = newImage;
- }
- return o;
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement