本文整理汇总了Golang中github.com/ovh/tat/models.User类的典型用法代码示例。如果您正苦于以下问题:Golang User类的具体用法?Golang User怎么用?Golang User使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了User类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Contacts
// Contacts retrieves contacts presences since n seconds
func (*UsersController) Contacts(ctx *gin.Context) {
sinceSeconds, err := GetParam(ctx, "sinceSeconds")
if err != nil {
ctx.JSON(http.StatusBadRequest, gin.H{"error": "Error while getting seconds parameter"})
return
}
seconds, err := strconv.ParseInt(sinceSeconds, 10, 64)
if err != nil {
ctx.JSON(http.StatusBadRequest, gin.H{"error": "Invalid since parameter : must be an interger"})
return
}
var user = models.User{}
err = user.FindByUsername(utils.GetCtxUsername(ctx))
if err != nil {
ctx.JSON(http.StatusInternalServerError, errors.New("Error while fetching user"))
return
}
criteria := models.PresenceCriteria{}
for _, contact := range user.Contacts {
criteria.Username = criteria.Username + "," + contact.Username
}
criteria.DateMinPresence = strconv.FormatInt(time.Now().Unix()-seconds, 10)
count, presences, _ := models.ListPresences(&criteria)
out := &contactsJSON{
Contacts: user.Contacts,
CountContactsPresences: count,
ContactsPresences: &presences,
}
ctx.JSON(http.StatusOK, out)
}
示例2: ResetSystemUser
// ResetSystemUser reset password for a system user
func (*UsersController) ResetSystemUser(ctx *gin.Context) {
var systemUserJSON resetSystemUserJSON
ctx.Bind(&systemUserJSON)
if !strings.HasPrefix(systemUserJSON.Username, "tat.system") {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("Username does not begin with tat.system (%s), it's not possible to reset password for this user", systemUserJSON.Username))
return
}
var systemUserToReset = models.User{}
err := systemUserToReset.FindByUsername(systemUserJSON.Username)
if err != nil {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("user with username %s does not exist", systemUserJSON.Username))
return
}
if !systemUserToReset.IsSystem {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("user with username %s is not a system user", systemUserJSON.Username))
return
}
newPassword, err := systemUserToReset.ResetSystemUserPassword()
if err != nil {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("Reset password for %s (system user) failed", systemUserJSON.Username))
return
}
ctx.JSON(http.StatusOK, gin.H{
"message": "Reset password successfull",
"username": systemUserToReset.Username,
"password": newPassword,
"url": fmt.Sprintf("%s://%s:%s%s", viper.GetString("exposed_scheme"), viper.GetString("exposed_host"), viper.GetString("exposed_port"), viper.GetString("exposed_path")),
})
}
示例3: Delete
// Delete deletes requested topic only if user is Tat admin, or admin on topic
func (t *TopicsController) Delete(ctx *gin.Context) {
topicRequest, err := GetParam(ctx, "topic")
if err != nil {
return
}
var user = models.User{}
err = user.FindByUsername(utils.GetCtxUsername(ctx))
if err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"error": "Error while fetching user."})
return
}
paramJSON := paramTopicUserJSON{
Topic: topicRequest,
Username: user.Username,
Recursive: false,
}
topic, e := t.preCheckUser(ctx, ¶mJSON)
if e != nil {
return
}
err = topic.Delete(&user)
if err != nil {
ctx.AbortWithError(http.StatusInternalServerError, errors.New(err.Error()))
return
}
ctx.JSON(http.StatusOK, "")
}
示例4: OneTopic
// OneTopic returns only requested topic, and only if user has read access
func (t *TopicsController) OneTopic(ctx *gin.Context) {
topicRequest, err := GetParam(ctx, "topic")
if err != nil {
return
}
var user = models.User{}
err = user.FindByUsername(utils.GetCtxUsername(ctx))
if err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"error": "Error while fetching user."})
return
}
topic := &models.Topic{}
errfinding := topic.FindByTopic(topicRequest, user.IsAdmin)
if errfinding != nil {
ctx.JSON(http.StatusInternalServerError, errfinding)
return
}
isReadAccess := topic.IsUserReadAccess(user)
if !isReadAccess {
ctx.JSON(http.StatusInternalServerError, errors.New("No Read Access to this topic: "+user.Username+" "+topic.Topic))
return
}
out := &topicJSON{Topic: topic}
ctx.JSON(http.StatusOK, out)
}
示例5: Convert
// Convert a "normal" user to a "system" user
func (*UsersController) Convert(ctx *gin.Context) {
var convertJSON convertUserJSON
ctx.Bind(&convertJSON)
if !strings.HasPrefix(convertJSON.Username, "tat.system") {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("Username does not begin with tat.system (%s), it's not possible to convert this user", convertJSON.Username))
return
}
var userToConvert = models.User{}
err := userToConvert.FindByUsername(convertJSON.Username)
if err != nil {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("user with username %s does not exist", convertJSON.Username))
return
}
if userToConvert.IsSystem {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("user with username %s is already a system user", convertJSON.Username))
return
}
newPassword, err := userToConvert.ConvertToSystem(utils.GetCtxUsername(ctx), convertJSON.CanWriteNotifications)
if err != nil {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("Convert %s to system user failed", convertJSON.Username))
return
}
ctx.JSON(http.StatusOK, gin.H{
"message": "Verification successfull",
"username": userToConvert.Username,
"password": newPassword,
"url": fmt.Sprintf("%s://%s:%s%s", viper.GetString("exposed_scheme"), viper.GetString("exposed_host"), viper.GetString("exposed_port"), viper.GetString("exposed_path")),
})
}
示例6: Me
// Me retrieves all information about me (exception information about Authentication)
func (*UsersController) Me(ctx *gin.Context) {
var user = models.User{}
err := user.FindByUsername(utils.GetCtxUsername(ctx))
if err != nil {
AbortWithReturnError(ctx, http.StatusInternalServerError, errors.New("Error while fetching user"))
return
}
out := &userJSON{User: &user}
ctx.JSON(http.StatusOK, out)
}
示例7: preCheckUser
func (*PresencesController) preCheckUser(ctx *gin.Context) (models.User, error) {
var user = models.User{}
err := user.FindByUsername(utils.GetCtxUsername(ctx))
if err != nil {
e := errors.New("Error while fetching user.")
ctx.AbortWithError(http.StatusInternalServerError, e)
return user, e
}
return user, nil
}
示例8: Create
// Create a new message on one topic
func (m *MessagesController) Create(ctx *gin.Context) {
messageIn, messageReference, topic, e := m.preCheckTopic(ctx)
if e != nil {
return
}
user, e := PreCheckUser(ctx)
if e != nil {
return
}
isRw := topic.IsUserRW(&user)
if !isRw {
ctx.JSON(http.StatusForbidden, gin.H{"error": fmt.Sprintf("No RW Access to topic " + messageIn.Topic)})
return
}
var message = models.Message{}
info := ""
if messageIn.Action == "bookmark" {
var originalUser = models.User{}
err := originalUser.FindByUsername(utils.GetCtxUsername(ctx))
if err != nil {
ctx.AbortWithError(http.StatusInternalServerError, errors.New("Error while fetching original user."))
return
}
err = message.Insert(originalUser, topic, messageReference.Text, "", -1)
if err != nil {
log.Errorf("Error while InsertMessage with action %s : %s", messageIn.Action, err)
ctx.AbortWithError(http.StatusInternalServerError, errors.New(err.Error()))
return
}
info = fmt.Sprintf("New Bookmark created in %s", topic.Topic)
} else {
err := message.Insert(user, topic, messageIn.Text, messageIn.IDReference, messageIn.DateCreation)
if err != nil {
log.Errorf("Error while InsertMessage %s", err)
ctx.AbortWithError(http.StatusInternalServerError, errors.New(err.Error()))
return
}
go models.WSMessageNew(&models.WSMessageNewJSON{Topic: topic.Topic})
info = fmt.Sprintf("Message created in %s", topic.Topic)
}
out := &messageJSONOut{Message: message, Info: info}
go models.WSMessage(&models.WSMessageJSON{Action: "create", Username: user.Username, Message: message})
ctx.JSON(http.StatusCreated, out)
}
示例9: validateTatHeaders
// validateTatHeaders fetch user in db and check Password
func validateTatHeaders(tatHeaders tatHeaders) (models.User, error) {
user := models.User{}
if tatHeaders.trustUsername != "" && tatHeaders.trustUsername != "null" {
err := user.TrustUsername(tatHeaders.trustUsername)
if err != nil {
return user, fmt.Errorf("User %s does not exist. Please register before. Err:%s", tatHeaders.trustUsername, err.Error())
}
} else {
err := user.FindByUsernameAndPassword(tatHeaders.username, tatHeaders.password)
if err != nil {
return user, fmt.Errorf("Invalid Tat credentials for username %s, err:%s", tatHeaders.username, err.Error())
}
}
return user, nil
}
示例10: Rename
// Rename a username of one user
func (*UsersController) Rename(ctx *gin.Context) {
var renameJSON renameUserJSON
ctx.Bind(&renameJSON)
var userToRename = models.User{}
err := userToRename.FindByUsername(renameJSON.Username)
if err != nil {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("user with username %s does not exist", renameJSON.Username))
return
}
err = userToRename.Rename(renameJSON.NewUsername)
if err != nil {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("Rename %s user to %s failed", renameJSON.Username, renameJSON.NewUsername))
return
}
ctx.JSON(http.StatusCreated, "")
}
示例11: Create
// Create creates a new topic
func (*TopicsController) Create(ctx *gin.Context) {
var topicIn topicCreateJSON
ctx.Bind(&topicIn)
var user = models.User{}
err := user.FindByUsername(utils.GetCtxUsername(ctx))
if err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"error": "Error while fetching user."})
return
}
var topic models.Topic
topic.Topic = topicIn.Topic
topic.Description = topicIn.Description
err = topic.Insert(&user)
if err != nil {
log.Errorf("Error while InsertTopic %s", err)
ctx.JSON(http.StatusInternalServerError, err)
return
}
ctx.JSON(http.StatusCreated, topic)
}
示例12: Update
// Update changes fullname and email
func (*UsersController) Update(ctx *gin.Context) {
var updateJSON updateUserJSON
ctx.Bind(&updateJSON)
var userToUpdate = models.User{}
err := userToUpdate.FindByUsername(updateJSON.Username)
if err != nil {
ctx.JSON(http.StatusBadRequest, gin.H{"error": fmt.Errorf("user with username %s does not exist", updateJSON.Username)})
return
}
if strings.TrimSpace(updateJSON.NewFullname) == "" || strings.TrimSpace(updateJSON.NewEmail) == "" {
ctx.JSON(http.StatusBadRequest, gin.H{"error": fmt.Errorf("Invalid Fullname %s or Email %s", updateJSON.NewFullname, updateJSON.NewEmail)})
return
}
err = userToUpdate.Update(strings.TrimSpace(updateJSON.NewFullname), strings.TrimSpace(updateJSON.NewEmail))
if err != nil {
ctx.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("Update %s user to fullname %s and email %s failed : %s", updateJSON.Username, updateJSON.NewFullname, updateJSON.NewEmail, err.Error())})
return
}
ctx.JSON(http.StatusCreated, "")
}
示例13: Archive
// Archive a user
func (*UsersController) Archive(ctx *gin.Context) {
var archiveJSON usernameUserJSON
ctx.Bind(&archiveJSON)
var userToArchive = models.User{}
err := userToArchive.FindByUsername(archiveJSON.Username)
if err != nil {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("user with username %s does not exist", archiveJSON.Username))
return
}
if userToArchive.IsArchived {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("user with username %s is already archived", archiveJSON.Username))
return
}
err = userToArchive.Archive(utils.GetCtxUsername(ctx))
if err != nil {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("archive user %s failed", archiveJSON.Username))
return
}
ctx.JSON(http.StatusCreated, "")
}
示例14: SetAdmin
// SetAdmin a "normal" user to an admin user
func (*UsersController) SetAdmin(ctx *gin.Context) {
var convertJSON convertUserJSON
ctx.Bind(&convertJSON)
var userToGrant = models.User{}
err := userToGrant.FindByUsername(convertJSON.Username)
if err != nil {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("user with username %s does not exist", convertJSON.Username))
return
}
if userToGrant.IsAdmin {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("user with username %s is already an admin user", convertJSON.Username))
return
}
err = userToGrant.ConvertToAdmin(utils.GetCtxUsername(ctx))
if err != nil {
AbortWithReturnError(ctx, http.StatusBadRequest, fmt.Errorf("Convert %s to admin user failed", convertJSON.Username))
return
}
ctx.JSON(http.StatusCreated, "")
}
示例15: Reset
// Reset send a mail asking user to confirm reset password
func (u *UsersController) Reset(ctx *gin.Context) {
var userJSON userResetJSON
ctx.Bind(&userJSON)
var userIn models.User
userIn.Username = strings.TrimSpace(userJSON.Username)
userIn.Email = strings.TrimSpace(userJSON.Email)
callback := strings.TrimSpace(userJSON.Callback)
if len(userIn.Username) < 3 || len(userIn.Email) < 7 {
err := fmt.Errorf("Invalid username (%s) or email (%s)", userIn.Username, userIn.Email)
AbortWithReturnError(ctx, http.StatusInternalServerError, err)
return
}
tokenVerify, err := userIn.AskReset()
if err != nil {
log.Errorf("Error while AskReset %s", err)
ctx.AbortWithError(http.StatusInternalServerError, err)
return
}
go utils.SendAskResetEmail(userIn.Username, userIn.Email, tokenVerify, callback)
ctx.JSON(http.StatusCreated, gin.H{"info": "please check your mail to validate your account"})
}