Advertisement
Guest User

Untitled

a guest
Jul 29th, 2015
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.99 KB | None | 0 0
  1. angular.module('app')
  2.  
  3. .factory('User', function(
  4. $http,
  5. $q,
  6. $localstorage,
  7. SERVER,
  8. CLIENTS,
  9. $cordovaOauth,
  10. $state,
  11. $cordovaFileTransfer
  12. ) {
  13. var o = {
  14. session_id: false,
  15. name: false,
  16. username: false,
  17. since: false,
  18. image: false,
  19. reports: false,
  20. comments: false,
  21. level: false,
  22. fbAccessToken: false,
  23. fbInfo: false,
  24. isAFacebookUser: false
  25. };
  26.  
  27. o.getStatistics = function() {
  28. var req = {
  29. method: 'GET',
  30. url: SERVER.url + '/api/v1/user/stats',
  31. headers: {
  32. 'SessionId': o.session_id
  33. }
  34. }
  35. return $http(req).success(function(data) {
  36. // merge data
  37. o.reports = data.user.report_count;
  38. o.comments = data.user.comment_count;
  39. o.level = data.user.level;
  40. });
  41. }
  42.  
  43. o.finishSignup = function(userdata) {
  44. var params = {
  45. auth_api: {
  46. username: userdata.username,
  47. birthdate: userdata.birthdate,
  48. gender: userdata.gender
  49. }
  50. };
  51.  
  52. var req = {
  53. method: 'POST',
  54. url: SERVER.url + '/api/v1/auth/finish_signup',
  55. headers: {
  56. 'SessionId': o.session_id,
  57. },
  58. data: params
  59. };
  60.  
  61. return $http(req).success(function(data) {
  62. 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);
  63. });
  64. }
  65.  
  66. o.fbSignIn = function() {
  67. return $cordovaOauth.facebook(CLIENTS.facebook, ["email"]).then(function(result) {
  68. o.fbAccessToken = result.access_token;
  69. }, function(error) {
  70. var messagere = /flow/
  71. if (!messagere.test(error)) {
  72. alert("Error -> " + error);
  73. }
  74. console.log("Error -> " + error);
  75. });
  76. }
  77.  
  78. o.fbGetData = function() {
  79. return $http.get('https://graph.facebook.com/v2.2/me', { params: { access_token: o.fbAccessToken, fields: 'id,email,name', format: 'json' } }).then(function(response) {
  80. o.fbInfo = response.data;
  81. });
  82. }
  83.  
  84. o.fbAuth = function() {
  85. var params;
  86.  
  87. params = {
  88. auth_api: {
  89. email: o.fbInfo.email,
  90. name: o.fbInfo.name,
  91. picture: 'http://graph.facebook.com/' + o.fbInfo.id + '/picture'
  92. }
  93. };
  94.  
  95. var req = {
  96. method: 'POST',
  97. url: SERVER.url + '/api/v1/auth/signin',
  98. headers: {
  99. 'Uid': o.fbInfo.id
  100. },
  101. data: params
  102. };
  103.  
  104. return $http(req).success(function(data) {
  105. o.isAFacebookUser = true;
  106. 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);
  107. });
  108. }
  109.  
  110. o.auth = function(username, password, signingUp, signinUpData) {
  111. var authRoute;
  112. var params;
  113. if (signinUpData) {
  114. params = {
  115. auth_api: {
  116. email: signinUpData.email,
  117. name: signinUpData.name,
  118. username: signinUpData.username,
  119. password: signinUpData.password,
  120. gender: signinUpData.gender,
  121. birthdate: signinUpData.birthdate
  122. }
  123. };
  124. } else {
  125. params = {};
  126. }
  127.  
  128. if (signingUp) {
  129. authRoute = 'signup';
  130. } else {
  131. authRoute = 'signin';
  132. }
  133.  
  134. var req = {
  135. method: 'POST',
  136. url: SERVER.url + '/api/v1/auth/' + authRoute,
  137. headers: {
  138. 'Username': username,
  139. 'Password': password
  140. },
  141. data: params
  142. };
  143. return $http(req).success(function(data) {
  144. 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);
  145. });
  146. }
  147.  
  148. // Set the session data
  149. o.setSession = function(session_id, name, username, since, image, reports, comments, level) {
  150. if (session_id) o.session_id = session_id;
  151. if (name) o.name = name;
  152. if (username) o.username = username;
  153. if (since) o.since = since;
  154. if (image) {
  155. var facebookre = /facebook/;
  156. if (!facebookre.test(image)) {
  157. o.image = SERVER.url + image;
  158. } else {
  159. o.image = image;
  160. }
  161. } else {
  162. o.image = 'img/missing.png';
  163. }
  164. o.reports = reports;
  165. o.comments = comments;
  166. if (level) o.level = level;
  167.  
  168. $localstorage.setObject('user', { session_id: session_id, name: name, username: username, since: since, comments: comments, reports: reports, image: image });
  169. }
  170.  
  171. // Check for available session
  172. o.checkSession = function() {
  173. var defer = $q.defer();
  174.  
  175. if (o.session_id) {
  176. // if session is already initialized in the service
  177. defer.resolve(true);
  178. } else {
  179. // detect if there is a session in localstorage from previous use
  180. // if it is, pull it into service
  181. var user = $localstorage.getObject('user');
  182.  
  183. if (user.session_id) {
  184. // if there is a user, lets get information from server
  185. o.setSession(user.session_id, user.name, user.username, user.since, user.image, false, false, false)
  186. var facebookre = /facebook/
  187. if (facebookre.test(user.image)) {
  188. o.isAFacebookUser = true;
  189. }
  190. o.getStatistics().then(function() {
  191. defer.resolve(true);
  192. }, function(reason) {
  193. o.destroySession();
  194. defer.resolve(false);
  195. });
  196. } else {
  197. // no user info in localstorage, reject
  198. defer.resolve(false);
  199. }
  200. }
  201. return defer.promise;
  202. }
  203.  
  204. o.fbUser = function() {
  205. return o.isAFacebookUser;
  206. }
  207.  
  208. o.destroySession = function() {
  209. $localstorage.setObject('user', {});
  210. o.session_id = false;
  211. o.name = false;
  212. o.username = false;
  213. o.since = false;
  214. o.image = false;
  215. o.reports = false;
  216. o.comments = false;
  217. o.level = false;
  218. o.isAFacebookUser = false;
  219. }
  220.  
  221. o.recoverPassword = function(email) {
  222. var req = {
  223. method: 'POST',
  224. url: SERVER.url + '/api/v1/auth/recover',
  225. data: {
  226. auth_api: {
  227. email: email
  228. }
  229. }
  230. };
  231. return $http(req);
  232. }
  233.  
  234. o.changePicture = function(session_id, newImage) {
  235. var options = {
  236. fileKey: 'user_api[image]',
  237. headers: {
  238. 'SessionId': session_id
  239. },
  240. params: {
  241.  
  242. }
  243. };
  244.  
  245. var url = SERVER.url + '/api/v1/user/change_picture';
  246.  
  247.  
  248. return $cordovaFileTransfer.upload(url, newImage, options);
  249. }
  250.  
  251. o.setImage = function(newImage) {
  252. o.image = newImage;
  253. }
  254.  
  255. return o;
  256. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement