forked from angular-fullstack/generator-angular-fullstack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathauth.service(coffee).coffee
116 lines (93 loc) · 2.15 KB
/
auth.service(coffee).coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
'use strict'
angular.module('<%= scriptAppName %>').factory 'Auth', ($location, $rootScope, $http, User, $cookieStore, $q) ->
currentUser = {}
currentUser = User.get() if $cookieStore.get('token')
###
Authenticate user and save token
@param {Object} user - login info
@param {Function} callback - optional
@return {Promise}
###
login: (user, callback) ->
cb = callback or angular.noop
deferred = $q.defer()
$http.post('/auth/local',
email: user.email
password: user.password
).success((data) ->
$cookieStore.put 'token', data.token
currentUser = User.get()
deferred.resolve data
cb()
).error ((err) ->
@logout()
deferred.reject err
cb err
).bind(this)
deferred.promise
###
Delete access token and user info
@param {Function}
###
logout: ->
$cookieStore.remove 'token'
currentUser = {}
return
###
Create a new user
@param {Object} user - user info
@param {Function} callback - optional
@return {Promise}
###
createUser: (user, callback) ->
cb = callback or angular.noop
User.save(user, (data) ->
$cookieStore.put 'token', data.token
currentUser = User.get()
cb user
, ((err) ->
@logout()
cb err
).bind(this)).$promise
###
Change password
@param {String} oldPassword
@param {String} newPassword
@param {Function} callback - optional
@return {Promise}
###
changePassword: (oldPassword, newPassword, callback) ->
cb = callback or angular.noop
User.changePassword(
id: currentUser._id
,
oldPassword: oldPassword
newPassword: newPassword
, (user) ->
cb user
, (err) ->
cb err
).$promise
###
Gets all available info on authenticated user
@return {Object} user
###
getCurrentUser: ->
currentUser
###
Check if a user is logged in
@return {Boolean}
###
isLoggedIn: ->
currentUser.hasOwnProperty 'role'
###
Check if a user is an admin
@return {Boolean}
###
isAdmin: ->
currentUser.role is 'admin'
###
Get auth token
###
getToken: ->
$cookieStore.get 'token'