Page Menu
Home
Musing Studio
Search
Configure Global Search
Log In
Files
F12217268
users.go
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
users.go
View Options
package
writefreely
import
(
"time"
"github.com/guregu/null/zero"
"github.com/writeas/web-core/data"
"github.com/writeas/web-core/log"
)
type
(
userCredentials
struct
{
Alias
string
`json:"alias" schema:"alias"`
Pass
string
`json:"pass" schema:"pass"`
Email
string
`json:"email" schema:"email"`
Web
bool
`json:"web" schema:"-"`
To
string
`json:"-" schema:"to"`
EmailLogin
bool
`json:"via_email" schema:"via_email"`
}
userRegistration
struct
{
userCredentials
Honeypot
string
`json:"fullname" schema:"fullname"`
Normalize
bool
`json:"normalize" schema:"normalize"`
Signup
bool
`json:"signup" schema:"signup"`
}
// AuthUser contains information for a newly authenticated user (either
// from signing up or logging in).
AuthUser
struct
{
AccessToken
string
`json:"access_token,omitempty"`
Password
string
`json:"password,omitempty"`
User
*
User
`json:"user"`
// Verbose user data
Posts
*
[]
PublicPost
`json:"posts,omitempty"`
Collections
*
[]
Collection
`json:"collections,omitempty"`
}
// User is a consistent user object in the database and all contexts (auth
// and non-auth) in the API.
User
struct
{
ID
int64
`json:"-"`
Username
string
`json:"username"`
HashedPass
[]
byte
`json:"-"`
HasPass
bool
`json:"has_pass"`
Email
zero
.
String
`json:"email"`
Created
time
.
Time
`json:"created"`
clearEmail
string
`json:"email"`
}
userMeStats
struct
{
TotalCollections
,
TotalArticles
,
CollectionPosts
uint64
}
ExportUser
struct
{
*
User
Collections
*
[]
CollectionObj
`json:"collections"`
AnonymousPosts
[]
PublicPost
`json:"posts"`
}
PublicUser
struct
{
Username
string
`json:"username"`
}
)
// EmailClear decrypts and returns the user's email, caching it in the user
// object.
func
(
u
*
User
)
EmailClear
(
keys
*
keychain
)
string
{
if
u
.
clearEmail
!=
""
{
return
u
.
clearEmail
}
if
u
.
Email
.
Valid
&&
u
.
Email
.
String
!=
""
{
email
,
err
:=
data
.
Decrypt
(
keys
.
emailKey
,
[]
byte
(
u
.
Email
.
String
))
if
err
!=
nil
{
log
.
Error
(
"Error decrypting user email: %v"
,
err
)
}
else
{
u
.
clearEmail
=
string
(
email
)
return
u
.
clearEmail
}
}
return
""
}
// Cookie strips down an AuthUser to contain only information necessary for
// cookies.
func
(
u
User
)
Cookie
()
*
User
{
u
.
HashedPass
=
[]
byte
{}
return
&
u
}
func
(
u
*
User
)
IsAdmin
()
bool
{
// TODO: get this from database
return
u
.
ID
==
1
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Oct 30, 2:22 AM (6 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3449897
Attached To
rWF WriteFreely
Event Timeline
Log In to Comment